我在这里奋斗街道,当我尝试添加API控制器时,它似乎会破坏我的所有MVC基本路线和区域路线。
在我的申请开始时,我致电
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
//FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
Util.RazorDebuggingSetup();
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
using System.Web.Mvc;
区域配置示例:
namespace **.Areas.Console
{
public class ConsoleRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Console";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Console_default",
"Console/Index",
new { controller = "base", action = "Index"}
);
context.MapRoute(
"Console_default2",
"Console/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
}
我的WebApiConfig类
using System.Web.Http;
namespace **.Modules.MVC
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration configuration)
{
configuration.Routes.MapHttpRoute(
"API Default",
"api/{controller}/{id}",
new
{
id = RouteParameter.Optional
}
);
}
}
}
路线类
using System.Web.Mvc;
using System.Web.Routing;
namespace **.Modules
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"ErrorHandler",
"Error/{action}/{id}",
new { controller = "Error", action = "Generic" , id = UrlParameter.Optional }
);
// Ignore old Friendly URLS.
// These should be removed.
routes.IgnoreRoute("Account/Login");
routes.IgnoreRoute("");
routes.IgnoreRoute("Website/{*pathInfo}");
routes.IgnoreRoute("Pages/{*pathInfo}");
routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" });
routes.IgnoreRoute("{*allasp}", new { allasp = @".*\.asp(/.*)?" });
routes.IgnoreRoute("{*allhtml}", new { allhtml = @".*\.html(/.*)?" });
routes.IgnoreRoute("{*allphp}", new { allphp = @".*\.php(/.*)?" });
//Default Mvc ignore.
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
//routes.MapRoute(
// "404-PageNotFound",
// "{*url}",
// new { controller = "Error", action = "HttpError" }
//);
}
}
}
现在在我的本地iis上,所有功能都按预期运行,但是当我尝试访问我的生产服务器上的URL时,我得到以下404.
当我打开路线调试时,我会在本地看到这一点。
很抱歉,这个文本墙似乎是没有表格显示数据的最佳方式。 https://meta.stackexchange.com/questions/73566/is-there-any-markdown-to-create-tables
无论如何都有问题。
现在我在部署的服务器上调试路由时看到的内容。
其他一些事实。
Mvc Version = 4
IIS = 7
当我删除WebApiConfig.Register(GlobalConfiguration.Configuration);表匹配(但都错过了api / *路由)。
所以问题的核心。当我添加WebApiConfig.Register时,为什么这两个路由表不同?
----------------编辑1 ------------------
另外注意,添加WebApiConfig.Register也会破坏我的捆绑路由:(。
答案 0 :(得分:1)
做一些挖掘我注意到了这一点。 https://stackoverflow.com/a/26972184/2560687
IMO第一点不好,因为它不具体。
注意第2点: 我的本地机器在gac中有这些dll但是部署机器没有。并将local = true复制到dll,一切正常:D
当问题回答是针对不同问题的建议答案时,此处的正确程序是什么?