問題タブ [asp.net-web-api-routing]

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.

0 投票する
1 に答える
269 参照

asp.net-web-api - Asp.NETWebApiルーティング

WebApiConfig.csに次のコードがあります

ABCController.cs

APIを呼び出そうとすると、コントローラーでアクションが見つからないと表示されます。

0 投票する
1 に答える
459 参照

asp.net-web-api - ASP.NET Web API の DefaultHttpControllerSelector は、要求ごとにルーティング ディクショナリを設定しますか?

API でバージョン管理を処理するカスタム HttpControllerSelector を作成しています。github の SDammann.WebApi.Versioning ライブラリを確認しましたが、実行すると、すべてのリクエストでルーティング ディクショナリが読み込まれているように見えました。デフォルトのものはこれを行いますか、それとも Sdammann ライブラリの設計上の欠陥ですか?

コントローラーが多数ある場合、リクエストごとにこのディクショナリを設定すると、パフォーマンスが低下しますか? これを行う別の方法はありますか?

0 投票する
2 に答える
3888 参照

c# - 文字列をスラッシュを含むURIパラメータとして渡すか、空です

ASP.NETWebAPIルーティングに問題があります。具体的には、空であるか、URI内にスラッシュを含む文字列パラメーターを渡したいと思います。しかし残念ながら、これはルーティングを壊します。

私はすでに適切なルートを設定しています。これは、「fubar」などの通常の文字列がある場合は問題なく一致します。エンコードされた文字列urlを渡そうとしましたが、これは機能しません。どうやら問題は、一部のhttp sysレイヤーがすでに文字列をデコードしていることです。つまり、"fu%2fbar"到着していませんが、"fo/bar"別のルートにつながります。

また、空の文字列を渡すと、URIは"api//..."、2つ/がマージされ、セグメントが破棄されます。

内部の問題を解決する1つの方法/は、URIを二重エンコードし、メソッド内でデコードすることです。しかし、これは非常に悪い選択肢のように思われるので、この問題を解決する方法について他の方法を探しています。

0 投票する
1 に答える
6428 参照

c# - フレームワークのデフォルトのWebAPIルートを変更するにはどうすればよいですか?

URLにアクションが指定されていない場合、アクション名としてHTTP動詞を使用するWebAPIの組み込みのデフォルトロジックがあるようです。たとえば、次のルートがあります。

そして、これが私の行動です:

GET動詞を使用して〜/ Conferencesに移動すると、「Get()」アクションが表示されます。POST動詞を使用する場合は、「Post([FromBody] Conferencevalue)」アクション...などに移動します。〜/ Conferences / GetCurrentに移動しようとすると([ActionName( "current")]が一番上にある場合でも)、競合が発生します。

リクエストに一致する複数のアクションが見つかりました:System.Collections.Generic.IEnumerable 1[MyApp.Models.Conference] Get() on type MyApp.Api.ConferencesController System.Collections.Generic.IEnumerable1 [MyApp.Models.Conference] GetCurrent()on type MyApp.Api.ConferencesController

これは、フレームワークがデフォルトのアクションを決定するためにEqualではなくStartsWithを使用していることを意味します。また、動詞をアクションに一致させるときにActionName属性を無視します。

私の質問は、StartsWithロジックを使用する代わりに、フレームワークのデフォルトのアクションを動詞に正確に一致させるにはどうすればよいですか?GET動詞は、Get()、GetCurrent()GetPast()などではなく、Get()アクションにのみ一致する必要があります(特に、ActionName属性を無視している場合)。

編集 簡単にするために、上記のルートの1つだけを示しました。まだドラフト中のすべてのルートを表示すると役立つと思います。独自のカスタムアクションを追加する余地を残しながら、完全に機能するRESTAPIを取得しようとしています。

更新 HTTP動詞の制約を追加すると、次のようになります。

0 投票する
1 に答える
2601 参照

asp.net - Web API インターフェイスはローカルでは機能しますが、Azure では機能しません

私のケースはこの質問に非常に似ていますが、彼は答えを得られなかったので、もう少し入力を投げると思いました.

すべてがローカルで (VS 組み込みサーバー上で) 正常に動作します。Azure にデプロイすると、「... という名前のコントローラーに一致するタイプが見つかりませんでした」という 404 エラーが表示されます。

ただし、routedebuggerモジュールをロードすると、Azure でもマッピングは問題ないように見えます。

その問題をデバッグするにはどうすればよいですか?

ありがとう、

アレックス

編集:私のルートはこのように作成されます:

編集2:ここに私のコントローラークラス

0 投票する
18 に答える
219241 参照

c# - Web API の要求に一致する複数のアクションが見つかりました

2 つの「Get」メソッドを使用しようとすると、このエラーが発生し続けます

要求に一致する複数のアクションが見つかりました: webapi

スタックに関するこれに関する他の同様の質問を見回していましたが、わかりません。

私は2つの異なる名前を持ち、「HttpGet」属性を使用しています

0 投票する
1 に答える
764 参照

asp.net-web-api - Web API のネストされたルーティングが期待どおりに機能しない

ネストされた Web API ルーティングのセットアップに問題があります。

次のルーティング構成が与えられた場合:

コントローラーのアクションは次のようになります。

このルート/api/users/1528/groupsを呼び出すと、次のエラーが発生します。

パラメータ ディクショナリに、のメソッドのgroupIDnull 非許容型のパラメータのnull エントリが含まれています。オプションのパラメーターは、参照型または null 許容型であるか、オプションのパラメーターとして宣言する必要があります。System.Int32AuthGroup Get(Int64, Int32)UsersGroupsController

単一の長いパラメーターでアクションを取得することを期待していましたが、明らかに何らかの理由でこれを無視し、ほとんどの引数を持つものにまっすぐ進んでいます。

Web API がルートを解釈する方法について MS で入手可能なものに基づいています: http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-and-action-selection正しいはずですが、明らかに機能していないように見えます。

0 投票する
1 に答える
195 参照

asp.net - ApiControllerの2つのアクションを明確にする方法

2つのGetメソッドを明確にするルートまたはその他の構成の作成に問題があります。サンプルクラスは次のとおりです。

myhost/api/usersにマップしたいのですがGetAll、にmyhost/api/users?id=123マップしたいのですがGetMany

現在、両方のメソッドが両方のURIの可能なアクションとして一致しているため、両方とも500エラーが発生します。

これが私のルートです:

この単純な例では知っていGetManyますが、空のIDリストをすべての要求として扱うようにメソッドを変更できますが、より複雑なシナリオではそうではない場合があります。

注:私はMVC 4 Web API、VisualStudio2010を使用しています。

0 投票する
5 に答える
3608 参照

c# - Web API メソッドが呼び出されないようにする

ASP.NET Web API を使用して Web API の作成に取り組んでいます。現在、エンドポイントの機能をスタブ化して、それに対して開発を開始できるようにしています。

私の WebApiConfig.cs ファイルは次のようになります。

私の UsersController.cs ファイルには、次のメソッドがあります。

/Users/GetUser有効なルートにならないようにするにはどうすればよいですか?

[NonAction]onを使用GetUser(int id)すると、完全に機能しなくなります。

編集:これが現在の出力です/Users/GetUser

0 投票する
1 に答える
1381 参照

asp.net-mvc-4 - 404 を返す MVC4 WebApi ルート

私は新しい Web Api MVC4 プロジェクトを開始しましたが、ルーターで何が間違っているのかを理解することができません。単純な Get リクエストのルートが 404 を返しています。

これが私のルート定義です:

ApiDefault-CategoryLevels ルートを使用しようとしています。Phil Haack のルーティング デバッガーをインストールしました。この URL を参照すると、次のように表示されます。

私が探しているルートが一致していること:

ただし、IIS Web サーバーからの戻り値は 404 です。

クエリ文字列を使用して、この方法で同じ URL を呼び出すと、次のように動作します。

Web リクエストが機能し、期待していた結果が返されました。最初の方法でリクエストを試行した場合にのみ、404 が返されます。

私の CategoriesController の全体は次のとおりです。