it-swarm.com.de

Asp.net-Web-API-Ausnahme nur nach der Bereitstellung um IIS : Eine Route mit dem Namen 'HelpPage_Default' befindet sich bereits in der Routensammlung

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>
30
Aminul

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.

59
Tibincrunch
  1. Klicken Sie in Visual Studio mit der rechten Maustaste auf Ihre Lösung -> klicken Sie auf Clean Solution
  2. Entfernen Sie alle Dateien in Ihrem\Project\bin\-Ordner
  3. Erstellen Sie Ihre Lösung in Visual Studio Cheers neu.
20
user5225916

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)",
4
Jeremy Thompson

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. 

1
aemorales1

Ich habe das gleiche Problem, nachdem ich den Projektnamen umbenannt habe. So, 

  1. Suchen und ersetzen Sie den richtigen Namen in der gesamten Lösung.
  2. Lösung reinigen
  3. Löschen Sie den Ordner bin & obj des Projekts.
  4. Lösung neu erstellen

..ja es funktioniert.

0
King_Fisher