C# MVC WebApi端点在生产环境中不起作用,但常规端点起作用

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

我有一个ASP.NETMVC项目,它在本地运行得非常好。它有一些从Controller继承的控制器和一些从ApiController继承的控制器。我的路线如下。当我在本地通过VisualStudio运行项目时,它工作得非常好。我可以点击所有端点并获得预期的响应。当我将其部署到云服务器(WindowsServer2008R2)时,只有:控制器端点工作(位于/p/{Controller}/{action})。任何:ApiController上的端点都不起作用。我得到以下所有错误:

{"$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在代码中添加日志记录吗?你不能区分项目,看看有什么不同吗?区分项目会非常有趣。请