問題タブ [routeattribute]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ASP.NET MVC 5: Define route order across controllers (RouteAttribute)
The RouteAttribute("abc", Order = 2)
ordering only seems to be respected within a controller: when the following methods are defined in the same controller I get the expected behavior, i.e., Method1
takes priority, Method2
is never invoked.
If I define those methods in two separate controllers I get an ambiguous route exception: InvalidOperationException: Multiple controller types were found that match the URL. This can happen if attribute routes on multiple controllers match the requested URL.
Is it possible to define the order across controllers using attribute routing?
Edit 1: It seems that even routes that would have an implicit ordering within one controller are ambiguous when spread over multiple controllers. The following would be okay within one controller (literal before wildcard), but throws an exception if placed into different controllers.
#xA;This makes me that it is by design to keep controllers focused and force similar routes to be defined in the same controller.
Edit 2:
These are the routes I actually want to use. I want to put them into different controllers, because they do different things. They differ by the prefix.
#xA;asp.net-mvc-5 - MVC5 属性ルーティング
Route Attributes を使用して MVC ルーティングを定義しようとしています。
私はコントローラに次のコードを持っています..
この URL ( http://localhost:6481/MDT/Detail?id=1245 ) を使用すると、JSON データが返されます。
しかし、使用した場合 ( http://localhost:6481/MDT/Detail/1245 )、変数 id が Null であるというエラーが表示されます。
ルーティング属性を使用して {Controller}/{Action}/{ID} ルーティングを実現する方法を教えてください。
asp.net - asp.net mvc 5のホストで公開されたときのエリアの混乱のルート属性
エリアでルート属性を使用しています。
私のルート構成は次のとおりです。
私のローカルでは、すべてが正しいです!今日、プロジェクトを公開してホストにアップロードしたときに、2 種類のエラーに直面しました。
Default MapRoute の URL を要求すると、mysite.com/Contents/1060
すべてが正しいように! しかし、自分の地域の URL を要求すると、2 種類のエラーに直面しました。
1) いくつかのリクエストには、次のようなエラーmysite.com/cms/comment
またはmysite.com/cms/category
エラーがあります:
しかし~/Areas/CMS/Views/ContentCategory/Index.cshtml
、私のホストには存在します!
2) 他のいくつかのリクエストには、次のようなエラーがあるmysite.com/cms/content
か、次のmysite.com/cms/gallery
エラーがあります:
このエラーの「ソース エラー」は、galleryController のデフォルト プロジェクト (cms ではない) ビューのコードを示しています。私はとても混乱しています。
繰り返しますが、これはホストとローカル システムで発生するだけで、すべてが正しいことを強調します。
また、このエラーは別のエラーの後に今日発生することにも注意してください。昨日、私のホストではすべてが修正され、このエラーは昨日までありませんでした!
asp.net - アクションへのルートがasp.net mvcのルート属性で見つかりません
ルート属性でasp.net mvcを使用すると、次のエラーが発生します。
POST を使用した localhost:5555/api/test のルートが見つからないのはなぜですか?
それが私のデフォルトのルート設定です:
asp.net-web-api - RouteAttribute がありません
Web アプリケーションで Microsoft ASP.NET Web API 2.2 を使用しています。
コントローラーは次のようになります。
問題 の説明 RouteAttribute クラスをプロジェクトに含めようとしていますが、そうするのが難しいことがわかりました。時々、それを取得したと思いますが、bin ディレクトリを削除して再度ビルドしようとすると、そこにはなく、Route という単語が赤く表示されます。もう 1 つの症状は、GlobalConfiguration.Configure と HttpConfiguration.MapHttpAttributeRoutes が失われることです。また、bin ディレクトリを消去してゼロからビルドすることの違いも理解できません。属性ベースのルーティングが WebAPI 2.2 の一部ではなく、アドオンであることを理解するのはさらに困難です。うまくいけば、一部のパッケージは必須であり、一部のパッケージはこれを機能させることが許可されていません。本当?
これは、特別な順序ではなく、私たちが試したことです。
- インストール パッケージの AttributeRouting
- インストール パッケージ AttributeRouting.WebApi
- インストール パッケージ Microsoft.AspNet.WebApi.WebHost
- 更新パッケージ - Microsoft.AspNet.WebApi.WebHost を再インストールします
- 更新パッケージ - 再インストール
- アンインストール パッケージの AttributeRouting
私はこれらすべてを一度に機能させましたが、同僚はリポジトリからコードをチェックアウトするときに RouteAttribute クラスを見つけることができず、単一のファイルを無視することはありませんでした。次に、bin ディレクトリを削除してバージョンを再構築したところ、RouteAttribute クラスが見つからないという状態に戻りました。
更新によって同じバージョンの Visual Studio を使用できるようにしましたが、問題は残っています。
MVC にもルート属性があり、それらが webapi ルート属性と同じではないことを認識しています。また、webapi ルート属性が Web ホスト型と自己ホスト型に分割されていることも認識しています。IIS でこれをホストしているため、参照リストに Ssytem.Web.Http.WebHost への参照を追加しようとしています。
残念ながら、彼らはすべてのアプリケーションで同じクラス名を維持するという決定を下しました。それらが異なっていれば、誤解は生じません。
csproj ファイルからの、プロジェクト内の参照のリストを次に示します。
c# - MapMvcAttributeRoutes の RouteData を追加するには?
マルチテナント Web サイトを構築しており、アプリケーションで MapMvcAttributeRoutes と標準の MapRoute の両方を使用しています。また、RouteAttribute を使用しないコントローラーにいるときに、このコードを使用してサブドメイン名を正常に取得します。RouteAttribute を使用するコントローラー/アクションからサブドメインの値を取得できません。値は RouteData コレクションから存在しません。では、RouteAttribute を使用するアクション内にいるときにサブドメイン値を取得する方法は??
RegisterRoutes のコードは次のとおりです。
例えば
これはうまくいきます:
これはうまくいきません:
デビッド
c# - Route 属性を継承すると、Web API の既存のアクションが台無しになります
thisRoute
に従って、ベースコントローラーから属性を継承しようとしています。正しく動作しているように見えますが、以前に動作していたアクションが台無しになります。
以下は、私の基本コントローラーと子コントローラーの最小限の例です。
ルート属性の継承を実装した後、api/entity/lookup
アクションは機能しますが、api/entity
(for All
)の場合、 とActionSelector
の両方の 2 つのアクションを返すため、エラーが発生します。All
LookupData
Route
通常ルートなのになぜ属性付きのアクションを選択しているのかわかりません。どうすればいいですか?ActionSelector
または、この問題に対してa を作成する堅牢な方法はありますか?
c# - ルート属性が機能しない
この記事に従って、MVC アプリで [Route] 属性を使用しようとしています: https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5 /
RouteConfig.cs に MapMvcAttributeRoutes があります
/Admin/Error/Duplicate を参照すると 404 が表示されますが、/Admin/Error?type=Duplicate は正常に動作します。
それに加えて、[Route("Error/{type}")]
試してみましたが、運がありません[Route("Admin/Error/{type})]
。[Route("{type})]
どこが間違っているのかわかりません。