Web API interface works locally but gets 404 after deployed to Azure Website

爱⌒轻易说出口 提交于 2019-12-18 03:14:47

问题


I'm working on a ASP.NET MVC 4 website. Together with MVC controllers, I have one API controller which contains an ajax GET API interface. It works perfectly when debugged locally with visual studio.

However, after I deployed it as an Azure Website, MVC controllers work, but the API controller doesn't work anymore. When jQuery code tries to reach it, it returns a response like:

No HTTP resource was found that matches the request URI 'http://example.com'.

It looks like at least the route works (otherwise, another 404 response body is returned.).

Additionally, I have another pure MVC 4 Web API service deployed as an Azure Cloud Service. It works perfectly. Thus, I wonder what causes the API inside MVC Website to fail? Thank you!


回答1:


Check for these things they usually help:

  1. Make sure your controller type is public and derives from ApiController
  2. Make sure the controller is named 'xxxxController' where xxxx is the controller name

In that case, the URL api/xxxx should work.




回答2:


It is a common problem When an MVC application is deployed on IIS, the HTTP url which is calling the REST Service exposed by your web API will change. If your api controller is named MyApiController, so in production evironment, you should add the application name before the calling URL. That means that /api/MyApi will become /MyApp/api/MyApi. MyApp is the prefix of your web site (yourwebsite/MyApp).




回答3:


I solved the issue. I use Telerik DataAccess as my ORM, and the project should have Copy Local to True.

Likewise, add all references as a Copy Local=True if they seem to be 3rd party dlls or from nuget.

You can find error more easily by adding <customErrors mode="Off" /> inside of <system.web> in Web.config file.



来源:https://stackoverflow.com/questions/13418344/web-api-interface-works-locally-but-gets-404-after-deployed-to-azure-website

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!