2017-01-16 24 views
1

ローカルに正常に動作するAPIがあります。ライブ環境に移動すると、正常に動作しません。WebAPIコントローラが動作していない間に動作しない

影響を受けたコントローラが戻るのメインPOSTアクション:テストGETアクションで

NotFound 

私は戻って取得:

不思議
"Message": "No HTTP resource was found that matches the request URI 

、私は同じテストアクションでtestControllerをアップロードするとき私はAPIから適切な応答を得るメインコントローラで使用されます。 Web構成

public class DeviceController : ApiController 
{ 

    [AllowAnonymous] 
    [HttpGet] 
    public HttpResponseMessage helloWorld() // This returns: "No HTTP resource was found that matches the request URI 'http://api.mySite.com/api/Device/helloWorld'." 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, "HelloWorld!"); 
    } 

    [AllowAnonymous] 
    [HttpPost] 
    public HttpResponseMessage Login([FromBody] LoginObject loginObject) // This returns: "NotFound" 
    { 
     ... 
    } 

}ここで

されています:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(

      name: "API Default", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 

     ); 
    } 
} 
+0

のようなルートのLYの宣言は、だから、 'ます。http:// api.mySite.com/API /テスト/ helloWorld'作品、右? – Marusyk

+0

本当に、私は "HelloWorld!"バック。これは非常に奇妙なようです...ルーティングの問題になっていますか? – Ryan

+0

うーん...それをチェックすることができます。ルート属性 '[Route(" api/Device/helloWorld ")]' – Marusyk

答えて

1

public class TestController : ApiController 
{ 

    [AllowAnonymous] 
    [HttpGet] 
    public HttpResponseMessage helloWorld() 
    { 
     return Request.CreateResponse(HttpStatusCode.OK, "HelloWorld!"); 
    } 
} 

コントローラは動作しません:

この

は正常に動作テストです

明示的に追加してみてくださいacrionによって

[Route("api/Device/helloWorld")] 
[AllowAnonymous] 
[HttpGet] 
public HttpResponseMessage helloWorld() 

または

[RoutePrefix("api/Device")] 
public class DeviceController : ApiController 

、その後

[Route("helloWorld")] 
[AllowAnonymous] 
[HttpGet] 
public HttpResponseMessage helloWorld() 
+0

ルートを明示的に宣言して、この問題を解決しました。ありがとうございました。 – Ryan

関連する問題