当我在本地运行时,网站运行良好。但是,当部署在Microsoft Azure上时,它会抛出上述错误。
我已经尝试从bin文件夹和obj文件夹中删除.DLL文件,但问题仍然存在。
堆栈追踪:
[ArgumentException: A route named 'HelpPage_Default' is already in the route collection. Route names must be unique.
Parameter name: name]
System.Web.Routing.RouteCollection.Add(String name, RouteBase item) +3213863
System.Web.Mvc.RouteCollectionExtensions.MapRoute(RouteCollection routes, String name, String url, Object defaults, Object constraints, String[] namespaces) +203
System.Web.Mvc.AreaRegistrationContext.MapRoute(String name, String url, Object defaults, Object constraints, String[] namespaces) +56
Makewayy.Areas.HelpPage.HelpPageAreaRegistration.RegisterArea(AreaRegistrationContext context) +87
System.Web.Mvc.AreaRegistration.CreateContextAndRegister(RouteCollection routes, Object state) +104
System.Web.Mvc.AreaRegistration.RegisterAllAreas(RouteCollection routes, IBuildManager buildManager, Object state) +190
System.Web.Mvc.AreaRegistration.RegisterAllAreas(Object state) +34
Makewayy.WebApiApplication.Application_Start() +12
[HttpException (0x80004005): A route named 'HelpPage_Default' is already in the route collection. Route names must be unique.
Parameter name: name]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +10104513
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +173
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296
[HttpException (0x80004005): A route named 'HelpPage_Default' is already in the route collection. Route names must be unique.
Parameter name: name]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +10085804
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +95
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
路线配置: -
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
AreaRegistration -
namespace Makewayy.Areas.HelpPage
{
public class HelpPageAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "HelpPage";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"HelpPage_Default",
"Help/{action}/{apiId}",
new { controller = "Help", action = "Index", apiId = UrlParameter.Optional });
HelpPageConfig.Register(GlobalConfiguration.Configuration);
}
}
}
答案 0 :(得分:2)
名为“HelpPage_Default”的路径已在路径集合中。路线名称必须是唯一的。
根据我的理解,您需要确保没有多次定义名为HelpPage_Default的路由。此外,您需要检查代码并确保AreaRegistration.RegisterAllAreas();
只能调用一次。
此外,请确保您的应用程序可以在您当地工作。在将其发布到azure网站之前,您可以使用kudu并清空D:\home\site\wwwroot
下的网络内容,然后重新部署您的应用。
答案 1 :(得分:1)
专门用于重命名文件后部署到Azure的答案here可能是答案。当我在本地部署时,一切正常,清理/删除bin文件夹什么也没做,是什么工作。
答案 2 :(得分:0)
如果清理bin文件夹仍然无济于事,可能是因为您不小心在项目中添加了对解决方案的另一个API的引用(这将注册两个API的路由配置->哎呀!)。
答案 3 :(得分:0)
在我重命名项目、重命名文件夹结构并更改 .sln 文件以反映这些更改后,我遇到了此错误。我尝试清洁溶液,但这对我不起作用。我不得不删除 bin 文件夹的内容,然后我才解决了错误。