C# MVC WebApi端点在生产环境中不起作用,但常规端点起作用
我有一个ASP.NETMVC项目,它在本地运行得非常好。它有一些从Controller继承的控制器和一些从ApiController继承的控制器。我的路线如下。当我在本地通过VisualStudio运行项目时,它工作得非常好。我可以点击所有端点并获得预期的响应。当我将其部署到云服务器(WindowsServer2008R2)时,只有:控制器端点工作(位于/p/{Controller}/{action})。任何:ApiController上的端点都不起作用。我得到以下所有错误:C# MVC WebApi端点在生产环境中不起作用,但常规端点起作用,c#,asp.net,.net,asp.net-mvc,asp.net-web-api,C#,Asp.net,.net,Asp.net Mvc,Asp.net Web Api,我有一个ASP.NETMVC项目,它在本地运行得非常好。它有一些从Controller继承的控制器和一些从ApiController继承的控制器。我的路线如下。当我在本地通过VisualStudio运行项目时,它工作得非常好。我可以点击所有端点并获得预期的响应。当我将其部署到云服务器(WindowsServer2008R2)时,只有:控制器端点工作(位于/p/{Controller}/{action})。任何:ApiController上的端点都不起作用。我得到以下所有错误: {"$id":"1
{"$id":"1","Message":"No HTTP resource was found that matches the request URI 'http://DOMAIN/CONTROLLER'.","MessageDetail":"No type was found that matches the controller named 'CONTROLLER'."}
我的路线:
在RouteConfig.cs中:
routes.MapRoute(
name: "Default",
url: "p/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Redirect", id = UrlParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}",
defaults: new { }
);
在WebApiConfig.cs中:
routes.MapRoute(
name: "Default",
url: "p/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Redirect", id = UrlParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}",
defaults: new { }
);
我将代码复制到一个新的webapi项目中,它可以正常工作。这一定是旧项目的某种配置问题,而不是VM缺少依赖关系,但我仍然不知道真正的原因是什么。之前有一些与此相关的问题,答案是一样的,创建一个新的API项目,但实际问题只有一些可能的原因
获得不同的项目是很好的。路由可能会变得混合,因为您没有为Web Api控制器使用前缀。我建议您尝试在Web Api中使用前缀,如routeTemplate:“Api/{controller}”的默认项目,或者禁用MVC路由并单独尝试Web Api。尝试了这两种方法后,您是否安装了Elmah?你看到错误了吗?没有错误。我现在很难设置Elmah。我想我会一直尝试直到它成功。你能在任何时候利用log4net在代码中添加日志记录吗?你不能区分项目,看看有什么不同吗?区分项目会非常有趣。请