問題タブ [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 に答える
627 参照

asp.net-mvc-4 - MVC4 Web API の構造体が原因でルートが壊れる

パラメーターのない Get と ID を受け取る Get を持つ単純なコントローラーがあります。

Identity は、単純化すると次のようなカスタム構造体です。

ただし、いずれかのエンドポイントに移動しようとすると、リクエストに一致する複数のアクションが見つかったことを示すエラーが表示されます。BooksController は、単一のリソースの Get が Identity 構造体ではなく Guid を受け取る場合に問題なく機能します。

私のカスタムモデルバインダーとワイヤーアップ:

パラメーターのない Get にパラメーターが追加されている場合、上記のバインドは正常に行われることに注意してください。つまり、BooksController を次のように変更すると:

私のルート構成は、すぐに使える例です。

その後、両方のエンドポイントに正しく移動できます。パラメーターなしの Get とカスタム ID を受け取る Get の両方を許可するように BooksController を設定するにはどうすればよいですか?

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

c# - 新しいWebApiプロジェクトにはAPIのデフォルトルーティングがありません(ただし、引き続き機能します)

新しいWebAPIMVCプロジェクトを作成しました。APIコントローラーにはパスがhttp://localhost:1234/apiあり、このルートから機能しますが、RegisterRoutesクラスにはデフォルトのルーティングが含まれておらず、次のものが含まれています。

APIのルーティングはどこにありますか?

乾杯

デイブ

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

asp.net-web-api - Redirect を介して、あるアクションから別のアクションに OData クエリ パラメータを渡す方法

次のシナリオがあります: 次のような ODataQueryOptions を受け入れる "GetAll" メソッドを持つ ProductsController:

次のような GetProducts メソッドを持つ CategoryController:

CategoryController の特定のカテゴリで製品をフェッチするロジックを再定義したくありません。する方法はありますか

1) リダイレクトの一部として ODataQueryOptions を渡しますか?

2) オプションを変更して、フィルター条件を追加できますか? 上記の例では、「GetAllProducts」が次のリクエストを受け取るように、リダイレクトを行う前に現在の CategoryID に追加のフィルター条件を追加したいと思います:「api/Products?$select=Name,Price&$top=10& $ 」フィルター=CategoryID eq 12 "

上記は理にかなっていますか、それとも別の方法でアプローチする必要がありますか?

前もって感謝します。

0 投票する
3 に答える
5524 参照

asp.net - 空の Web アプリケーションに追加された Web API のルーティングが機能しない

John Papa の優れた「SPA Jumpstart 」コースをたどりながら、スピーカー コントローラーをテストするチュートリアルのポイントにたどり着きました。この時点で、アプリはスピーカーをロードする代わりに「404: Not found」エラーを返しました。

SpeakerController に何か問題があった場合は、単純な右クリック -> 項目の追加 -> Web API コントローラーの追加を行い、標準の起動メソッドだけで「valuesController」を作成しました。それもうまくいきませんでした。

Chrome の開発ツールで。

その後、基本的な空の Web アプリケーション プロジェクトを使用してゼロから再試行し、nuget に移動して Microsoft Wep Api パッケージをインストールしました。次に、「valuesController」を再度追加しましたが、まだ何もありません。その後、さらに多くのことを行う必要があることに気付き、WebApiConfig.vb というファイルを配置する "App_Start" フォルダーを追加しました。これには以下が含まれていました:

System.Web.Http をインポートします。

そして、次を含む「global.asax」ファイルを追加しました。

これを行った後、基本的なルーティングが機能し、そのコントローラーのデフォルト ページに正常に移動できました。

ただし...ジャンプスタートプロジェクトでWeb APIパッケージをアンインストールして再インストールしても、関連ファイル(global.asaxおよびwebApiConfig.vb)ですべてが同一であるように(私には)見えても、同じURLにアクセスできません)。

"scripts/css" やその他の js ファイルが index.vbhtml ページでレンダリングされないという別の問題がありますが、"...api/speakers " または "...api/values" をテストするため、インデックス ページをバイパスします。

Web API パッケージ以外は何もいらないはずですよね? global.asax および webapiconfig.vb ページにブレークポイントを配置しましたが、ヒットすることはありません。ただし、デバッガーが接続されるまでに、それらは既に完了していると思います。私は今どこを見るべきか完全に迷っています。ルーティングを妨害する可能性のある他のファイルは存在しないはずですよね?

私のpackages.configファイル:

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

asp.net-mvc - 同じリソースを識別するためのasp.net webapi url

さまざまな ID タイプでリソースを識別できるようにしたいと考えています。例えば:

GET http://example.com/customers/internalId=34に移動します

GET http://example.com/customers/externalId= 'JohnDoe' に移動します

ジェネリックコントローラーメソッドに解析ロジックを持たせることでこれを行うことができることはわかっていますが、そうしたくありません。可能であれば、asp.net webapi のルーティング機能を使用してこれを実現するにはどうすればよいですか。

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

asp.net - MVC4WebAPIでルートが認識されない

ストレートMVCでルートを使用したことがありますが、ASP.NETWebAPIはあまり使用していません。明らかに私は何か間違ったことをしています、おそらく誰かが助けることができますか?UsersControllerという1つのコントローラーと、RegisterとDetailsという2つのメソッドがあり、どちらも2つの文字列パラメーターを受け取り、HttpGetとしてマークされた文字列を返します。もともと私はWebApiConfig.csの2つのルートマッピングから始めました。

この設定では、次のようなURLの最初のルートのみが検出されます。

私が電話した場合:

404を取得します。2つのルートを入れ替えると、Detailsメソッドを呼び出すことはできますが、Registerメソッドを呼び出すことはできず、再び404を取得します。現在の回避策は、ルートをより具体的にすることです。

UsersControllerは次のようになります。

したがって、私が理解していないのは、2番目に登録されたルートの{action}コンポーネントが正しいメソッドに関連付けられていない理由です。

ありがとう

ジョー

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

asp.net-mvc-4 - 「複数のアクションが見つかりました」エラー

Web API サービス用に次のデフォルト ルートを設定しています ...

「UsersController」の下に次のサービスがあります。

問題は、3 つのサービスのいずれかにアクセスしようとすると、「複数のアクションが見つかりました」というエラーが表示されることです。リクエストは、すべてのルートから最後のルートを選択して、リクエストを実行する必要があります。

「/api/users/byemail?email=blah@blah.com」を実行する場合、「ByEmail」がアクションであり、メソッドとアクションを使用して正しいメソッドと一致することを知ってはいけませんか? 私は何かが欠けていると思います。

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

asp.net-web-api - Web API のアクションと QueryString パラメーター

このような URL でクエリ文字列が渡されたかどうかを汎用ルートで判断したい

これが私の現在のルート定義です。


Route定義のオプションのアクションとしてdateOfLog値を追加するといういくつかの回答を読みました:

これはうまくいかないようです。何か間違ったことをしているのかもしれません。よくわかりません。


これは私が現在問題を処理している方法ですが、Routing Engine の ModelBinding 機能を使用したいと思います。

ModelBinding を正しく使用する Route 定義を作成し、カスタム URL をコントローラーのパラメーターにマップする方法を教えてください。

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

asp.net - メソッド ODataHttpRouteCollectionExtensions.MapODataRoute で名前空間を指定するにはどうすればよいですか?

「... という名前のコントローラーに一致する複数の型が見つかりました」というエラーが表示され、MapHttpRoute メソッドの解決策が見つかりました。名前空間の配列または MapODataRoute に似たものを渡すことは可能ですか?