問題タブ [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 投票する
2 に答える
3456 参照

asp.net - ASP NET Web API ルート テンプレート

次のAPIを持つAgencyという名前のエンティティがあります

私が使用したルートテンプレートは

明らかに2番目と3番目の間にあいまいさがあります。IDをクエリ文字列に入れる回避策があります

スマートな方法があるに違いないと思います。これについて提案していただけますか?

ありがとう

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

.net - ルートにマルチパート アクションを含めることは可能ですか?

わかりましたので、典型的なルートは次のようになります。

問題は、既存のエンドポイントがこのようになっていることです

その一例が当社の支払いコントローラーです。次のエンドポイントがある可能性があります。

メソッド名はそれぞれ次のようになります。

慣例を維持するためにすべてのエンドポイントを WebApiConfig に追加するのではなく、テンプレートを使用してこのシナリオを処理する方法はありますか?

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

asp.net-web-api - ASP.NET Web API アプリケーションのバージョン固有のヘルプ ドキュメント ページの生成

「VersionHeaderVersionedControllerSelector」を使用して、X-Api-Header で API をバージョン管理するために WebAPIバージョニング パッケージを使用しています。また、Microsoft.AspNet.WebApi.HelpPageを使用して、API のドキュメントを自動生成しています。コントローラーのバージョン管理が機能するには、"VersionHeaderVersionedControllerSelector" が次のように要求を適切なバージョンのコントローラーにルーティングできるように、名前空間のサフィックスとして VersionXYZ を使用して名前空間を設定する必要があります。

これは意図したとおりに機能しますが、生成されたヘルプ ページを見ると、ApiDescriptionの ID ( GETapi/Version1.Products ) および RelativePath( api/Version1.Products ) プロパティに名前空間の "VersionXYZ" サフィックスが含まれています。理想的には、API バージョン番号とドリルインだけで API を通常の方法で表示するトップレベルのヘルプ ページを用意することです。つまり、ApiDescription.ID = GETapi/Products と ApiDescription.RelativePath = api/Products

Out of the Box API を使用してこれを達成する方法はありますか、それとも ApiExplorerの独自の実装をロールアウトする必要がありますか?

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

file-upload - MVC4 Web-API を使用したファイル アップロード フォーム: エラー 101 の取得 (net::ERR_CONNECTION_RESET): 接続がリセットされました。エラー

VS2010 を使用して MVC4 Web-API アプリでコントローラー アクションにアクセスしようとすると、Web ページを使用できないというエラーが発生します。小さなサイズ (1 MB 未満) の pdf ドキュメントをアップロードしようとしています。バイト [] を作成して、別のサービスに渡します。ただし、通常のコントローラーにも API コントローラーにもアクセスできません。私のアプリは動作し、すべてのビュー/パーシャル/など。これ(ファイルアップロードフォームのあるページ)を除いて、問題なく表示されます。このビューは、厳密に型指定されたパーシャルです。

ここに示されている方法を使用してみました: Upload a file MVC 4 Web API .NET 4およびここ: http://blogs.msdn.com/b/henrikn/archive/2012/03/01/file-upload -and-asp-net-web-api.aspxと、アクション属性がアクションを見つけられないため、両方とも機能しません。api/Documents を配置しても Home/api/Documents を配置しても機能しません。だから私はあきらめて、html ヘルパーの beginform に戻りました。そのため、派手な Web API をあきらめた後 (非同期を機能させることができませんでした)、古い学校に行ってフォームを介してファイルを渡すだけだと考えましたが、同じエラーが発生します。また、ページの再作成、httphandlers、ランタイムの調整、ルートと apiroute の調整を試みましたが、完全に途方に暮れています。助けてください!

私のUI:

URL付きフォーム 私のエラー: エラー

私のフォーム:

私のAPIコントローラ:これは意味がないことはわかっていますが、ここに到達するかどうかを確認するためのブレークポイントがありますが、そうではありません...

私の通常のコントローラーアクション:

私の WebApiConfig:

私のルート構成:

My WebConfig の一部:

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

asp.net-web-api - asp.net web api ルーティング設計 (複数のルート)

現在、ASP.NET Web API を使用して REST API を設計しています。

私は次のようなメソッドを提供したいと考えています (http メソッドは無関係です - すべてで動作するはずです):

  • /api/クライアント
  • /api/client/CID1234 (CID1234 = ID)
  • /api/client/CID1234/orders (注文 = アクション)

問題は次のとおりです: Idはオプションである必要があります - /api/client はクライアントのリストを返す可能性があります アクションもオプションである必要があります - ある場合は特定のクライアントを取得し、別の場合はそのクライアントで特定のアクション実行したい. (RPC スタイル)

私が使用している「ID」が非常に異なって見えるため、制約を使用できるとは思いません。

このアプローチはうまくいきませんでした:

このアプローチも機能しませんでした:

たとえば、これは「アクション」と「id」を区別できないため、404 を返します。「名前「CID1234」に一致するアクションがコントローラー「クライアント」に見つかりませんでした。

必要な柔軟性を得るには、カスタム Actionselector を使用する必要がありますか? それとも、機能に組み込まれている Web API を使用して何とか可能ですか? 誰かが注文を別のエンティティとして使用したい場合があることを理解しています。しかし、そこには実際の「アクション」(「エンティティ」ではない) があるかもしれません。「ロストパスワード」、「パスワード変更」など。

アドバイスありがとうございます

PS:ここで説明されているようなことは、私がやりたいことではありません。不適切な API 設計。

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

asp.net-web-api - UriPathExtensionMappingを使用して、WebAPIの応答形式を制御します

ASP.NETWebAPIでUriPathExtensionMappingを機能させるのに問題があります。私の設定は次のとおりです。

私のルートは次のとおりです。

私のグローバルASAXファイルは次のとおりです。

私のコントローラーは:

curlを使用してリクエストを行う場合、JSONがデフォルトの応答です。明示的にXMLをリクエストした場合でも、JSONを取得します。

戻り値:

誰かが私のセットアップの問題を見ることができますか?

次のコードは、ルートが構成された後、Global.asaxファイルの拡張子をマップします。

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

c# - 特定のコントローラーアクションのためのASP.NETMVC4ルーティング

私は次のコントローラー/アクションを持っています:

summaryOnlyパラメーターを指定する必要はありませんが、minDateとmaxDateを指定する必要があります。

誰かが上記のルートを提供できますか?

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

asp.net-mvc-4 - HttpConfiguration の RouteHandler

ASP.Net MVC の WebAPI の RouteHandlers に関する興味深い記事を偶然見つけました。

http://techbrij.com/separate-web-api-action-mobile-asp-net-mvc

この記事では、デスクトップ Web ブラウザーとモバイル デバイスからの同じ WebAPI 要求がどのように異なるコントローラーにルーティングされるかを示します。この例では、次のように RouteHandler を使用しています。

このコードは、Global.asax で使用されます。

ただし、HttpConfiguration が config メソッドに渡される App_Start の WebApiConfig を介して WebAPI ルートを登録しています。

config.Routes.MapHttpRoute には RouteHandler を処理する機能がありません。config.Routes.MapHttpRoute で RouteHandler を使用するにはどうすればよいですか?

ご協力いただきありがとうございます。

アップデート

さらに調査した結果、探しているものが見つかったと思いますが、このアプローチが良いかどうかはわかりません。

私の目的は、着信要求をインターセプトし、要求のデバイス タイプを特定して、応答を正しいデバイス (デスクトップ、タブレット、モバイルなど) に合わせて調整できるようにすることです。HttpRequestMessage は、ヘッダーと UserAgent 文字列へのアクセスを許可します。UserAgent を分析してデバイスのタイプを判別する方法を見つけました ( http://techbrij.com/display-mode-mobile-tablet-tv-aspnet-mvc )。コントローラー名の後に DeviceType を配置する命名規則を使用しています。

値[DeviceType]コントローラー

例:

  • ValuesController
  • ValuesMobileController
  • ValuesTabletController

UserAgent から devicetype を特定し、RouteData コレクションの Controller 名を交換します。

**注: 以下の DisplayModeConfig.GetDeviceType(userAgent) は、上記のリンクで概説されているアプローチを使用しています

デバイスの種類ごとに応答を処理するコントローラーを指示することで、デバイスの種類に合わせて適切な応答を調整することで、ユーザー エクスペリエンスをより適切に制御できます。

このアプローチについてどう思いますか?このアプローチに何か問題はありますか?

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

asp.net - multipart /mixedhttpリクエストをasp.netWebAPIコントローラーに送信する

次のように、マルチパート/混合httpリクエスト($ batch)をasp.netWebAPIコントローラーに送信したいと思います。

問題は、私のリクエストがコントローラーの適切なアクションにルーティングされないことです。この問題を解決するための解決策はありますか?!