我知道这个问题 很多 的其他问题表面看起来可能相同,但我相当确定我的情况略有不同。我在API调用的生产环境中遇到404错误,并尝试了以下所有操作:
<remove name="UrlRoutingModule-4.0"/>
<add name="UrlRoutingModule-4.0" path="*" verb="*" type="System.Web.Routing.UrlRoutingModule" preCondition=""/>
<modules runAllManagedModulesForAllRequests="true">
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
在线查看了大多数潜在的解决方案之后,我发现大多数人的错误信息都是这样的:
我的不同之处是左栏中的处理程序部分。我反而提到了System.Web.Http.WebHost.HttpControllerHandler
,这表明它与API有关。
我尝试点击的网址是https://website.com/api/discounts/validate,我的路由配置如下:
public class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "ApiDefault",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
}
}
在Register
方法的最后,我的Global.asax.cs
会调用Application_Start
。同样,这一切都适用于我们的开发和QA环境。