[解決済み] x」という名前のルートは、すでにルートコレクションに含まれています。ルート名は一意である必要があります。ASP.NET MVC 3での例外
2022-11-25 05:45:09
質問
ASP.NET MVC 3 の Web サービスをしているのですが、断続的にこの例外が発生し続けます。
スタックトレースです。
Server Error in '/' Application.
A route named 'ListTables' 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 'ListTables' is already in the route collection. Route names must be unique.
Parameter name: name
Source Error:
Line 24: // }
Line 25: // );
Line 26: context.MapRoute(
Line 27: "ListTables",
Line 28: // example:
Source File: C:\inetpub\wwwroot\SchemaBrowserService\Website\Areas\Api\ApiAreaRegistration.cs Line: 26
Stack Trace:
[ArgumentException: A route named 'ListTables' is already in the route collection. Route names must be unique.
Parameter name: name]
System.Web.Routing.RouteCollection.Add(String name, RouteBase item) +2329682
System.Web.Mvc.RouteCollectionExtensions.MapRoute(RouteCollection routes, String name, String url, Object defaults, Object constraints, String[] namespaces) +236
System.Web.Mvc.AreaRegistrationContext.MapRoute(String name, String url, Object defaults, Object constraints, String[] namespaces) +59
System.Web.Mvc.AreaRegistrationContext.MapRoute(String name, String url, Object defaults) +17
SchemaBrowserService.Areas.Api.ApiAreaRegistration.RegisterArea(AreaRegistrationContext context) in C:\inetpub\wwwroot\SchemaBrowserService\Website\Areas\Api\ApiAreaRegistration.cs:26
System.Web.Mvc.AreaRegistration.CreateContextAndRegister(RouteCollection routes, Object state) +105
System.Web.Mvc.AreaRegistration.RegisterAllAreas(RouteCollection routes, IBuildManager buildManager, Object state) +199
System.Web.Mvc.AreaRegistration.RegisterAllAreas(Object state) +45
System.Web.Mvc.AreaRegistration.RegisterAllAreas() +6
Website.MvcApplication.Application_Start() in C:\Users\djackson\Downloads\RestApiMvc3\Website\Website\Global.asax.cs:35
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.272
おそらく、Route Debugger が、私が変更または削除した古いルートがあることを示し、(私のマシンを再起動しても)消えないという事実に関連していると思われます。 スタック トレースは、削除されてから長い時間が経過したソース ファイルを参照しており、私のアプリは新しい場所に移動され、洗浄され、それ以来再構築されています。 私は何を見逃しているのでしょうか?
以下は、私のルート登録コードのすべてです。
// in Global.asax.cs:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default2", // Route name
"Api/{controller}/{action}/{id}", // URL with parameters
new { controller = "DataSource", action = "Index", area = "Api", id = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
// in ApiAreaRegistration.cs:
public class ApiAreaRegistration : AreaRegistration
{
public override string AreaName { get { return "Api"; } }
public override void RegisterArea(AreaRegistrationContext context)
{
// DataSources
// Tables
context.MapRoute(
"ListTables",
// example:
// /api/DataSources/DataSource/1/schemata/schema/dbo/tables
"Api/DataSources/DataSource/{dataSourceId}/schemata/{schemaName}/tables",
new
{
controller = "Tables",
action = "TableList",
schemaName = "dbo",
dataSourceId = "DefaultId"
}
);
// Schemata
context.MapRoute(
"Schema",
// example:
// /api/DataSources/DataSource/1/schemata/schema/dbo
"Api/DataSources/DataSource/{dataSourceId}/schemata/{schemaName}",
new
{
controller = "Schema",
action = "Schema",
dataSourceId = "DefaultId",
schemaName = UrlParameter.Optional
}
);
// // DataSources
context.MapRoute(
"SingleDataSource",
"Api/DataSources/DataSource/{dataSourceId}",
new
{
controller = "DataSource",
action = "DataSource",
dataSourceId = UrlParameter.Optional
}
);
context.MapRoute(
"ListDataSources",
"Api/DataSources",
new
{
controller = "DataSource",
action = "DataSourceList",
dataSourceId = "DefaultId"
}
);
context.MapRoute(
"Api_default",
"Api/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
どのように解決するのですか?
この問題を解決するには、プロジェクトの bin フォルダに移動して、すべての DLL ファイルを削除してから再構築し、問題を解決しました。
関連
-
.NET複数データベース一括データ挿入、更新(SqlServer、MySql、PgSql、Oracleをサポートします。)
-
net core downlink tracking skywalking インストールと使いやすいチュートリアル
-
.NET 6における暗黙の名前空間参照
-
[解決済み] IIS7 の「クラシック」パイプラインモードと「統合」パイプラインモードの違いは何ですか?
-
[解決済み] IISのAppPoolIdentityとファイルシステムの書き込みアクセス権
-
[解決済み】部分ビューから特定のセクションにコンテンツを注入する ASP.NET MVC 3 with Razor View Engine
-
[解決済み】ASP.NETのWebサイト全体のブラウザキャッシュを無効にする
-
[解決済み] パネルまたはPlaceHolderの使用
-
[解決済み] フレームワークのランタイムターゲットが見つからない .NETCoreApp=v1 互換ランタイムの1つと互換性がある
-
[解決済み] WatiNかSeleniumか?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
.NET 6:.NETのロギングコンポーネントlog4netを使用する。
-
ASP.NET Core ディペンデンシーインジェクションの詳細
-
ASP.NET学習でよくあるエラーのまとめ
-
非同期タスクキャンセルと監視のネット実装
-
[解決済み] Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/"). この違いは何ですか?
-
[解決済み] イベントログへの書き込み時にSystem.Security.SecurityExceptionが発生する。
-
[解決済み] Server.UrlEncode vs. HttpUtility.UrlEncode
-
[解決済み] Visual StudioのApp_Dataフォルダは何に使うのですか?
-
[解決済み] パネルまたはPlaceHolderの使用
-
[解決済み] .Netが間違った参照アセンブリのバージョンを選択する