Ich habe this question gelesen und die dort genannten Lösungen ausprobiert, bekomme diese Ausnahme jedoch erst, nachdem ich die Anwendung auf IIS eines Remote-Servers veröffentlicht habe. Bei meinem lokalen Computer IIS funktioniert die Anwendung einwandfrei. Ich habe keine Ahnung, was diese Ausnahme auf diesem Server verursacht:
Server Error in '/' Application.
A route named 'HelpPage_Default' is already in the route collection. Route names must be unique.
Parameter name: name
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: A route named 'HelpPage_Default' is already in the route collection. Route names must be unique.
Parameter name: name
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the Origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[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) +3713577
System.Web.Mvc.RouteCollectionExtensions.MapRoute(RouteCollection routes, String name, String url, Object defaults, Object constraints, String[] namespaces) +350
System.Web.Mvc.AreaRegistrationContext.MapRoute(String name, String url, Object defaults, Object constraints, String[] namespaces) +95
XbimServer.Areas.HelpPage.HelpPageAreaRegistration.RegisterArea(AreaRegistrationContext context) +174
System.Web.Mvc.AreaRegistration.RegisterAllAreas(RouteCollection routes, IBuildManager buildManager, Object state) +323
BimServer.WebApiApplication.Application_Start() +23
[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) +12600317
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +175
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +404
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +475
[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) +12617364
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +12456981
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34212
Folgendes habe ich bei Global.asax.cs
eingerichtet:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
Mein RouteConfig.cs
:
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 }
);
}
Und mein WebApiConfig.cs
:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Ich habe auch die folgende Änderung an meiner web.config-Datei vorgenommen:
<system.webServer>
<modules>
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
Ich bin gerade auf dieselbe Ausgabe gestoßen. Ich denke, der Fehler war darauf zurückzuführen, dass ich zuvor eine andere Lösung für meine Site bereitgestellt hatte und es noch Dateien gab, die irgendwie in den Weg kamen.
Um dieses Problem zu beheben, habe ich das Kontrollkästchen "Zusätzliche Dateien am Ziel entfernen" aktiviert, während ich Visual Studio auf meiner Azure-Site publizierte. Ich würde davon ausgehen, dass Sie alte Dateien, die sich auf dem Server befanden, vor der Veröffentlichung einfach manuell löschen konnten. Danach lief die Site einwandfrei und fehlerfrei.
Ich habe einen Namespace umbenannt, indem ich ihn umgestaltet habe und dabei diese hart codierte Zeichenfolge verpasst habe:
Projekt> Bereiche> HelpPage> AppStart:
public static class HelpPageConfig
{
[SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters",
MessageId = "<CORRECT NAMESPACE>.Areas.HelpPage.TextSample.#ctor(System.String)",
Ich hatte das gleiche Problem und habe mehrere Lösungsvorschläge aus verschiedenen Threads mit ähnlichen Problemen ausprobiert.
Ich habe endlich eine saubere Kopie der Lösung aus dem Team Explorer ausgecheckt und das für mich behoben.
Ich habe das gleiche Problem, nachdem ich den Projektnamen umbenannt habe. So,
..ja es funktioniert.