問題タブ [web-api-contrib]
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# - WebApiContribを使用したルートテスト
テストしようとしているWebApiプロジェクトがあります。私はコントローラーを持っています-
ルートをテストする必要があり、WebApiContrib.Testingパッケージを使用しようとしています。
さて、私の問題は、ルートを登録するときにGlobalConfiguration.Configuration.Routes
、タイプがを使用することですHttpRouteCollection
。
私のテストでは、アクセスできますRouteTable.Routes
が、これはタイプRouteCollection
です。
その結果、このタイプの非互換性のために、WebApiルートをテストに登録できません。
誰かが以前にこの問題に遭遇したことがありますか?私が行方不明になっていることは明らかですか?
c# - DelegatingHandler に応答ヘッダーがありません
Web API プロジェクトの HTTP 応答ヘッダーをログに記録しようとしています。
このプロジェクトは、VS2012、.NET 4.5、および ASP.NET MVC 4 によって開発されています。
次のDelegatingHandler
ようなサブクラスを作成しました。
ただし、問題は、からヘッダー値を取得できないことresponse
です。response.Headers
は空のコレクションで、response.Content.Headers
という名前のキーだけが含まれてContent-Type
おり、HttpContext.Current
はnull
です。
同じロジックを使用してヘッダーをログに記録するWebAPIContribのコードを見てきましたが、それらのコードも機能していないようです。
では、Web API プロジェクトで HTTP 応答ヘッダーをトレースするにはどうすればよいでしょうか?
c# - webapicontrib.formatting.xlsx を使用した content-type の使用
webapi2 と webapicontrib.formatting.xlsx を使用して Excel ファイルを作成しています。
この行を webapiconfig.cs に追加すると、問題なく動作します
しかし、その後、デフォルトのコンテンツ ネゴシエーションの可能性が失われます。つまり、json として、またはブラウザーから (xml を期待して) 何かを要求すると、常にバイナリが取得されるため、その行を削除しました (デフォルトの動作を好みます)。
リクエストに追加してみました:
ただし、ファイルを取得するのではなく、json フォーマッタを使用します。
デフォルトのフォーマッタの動作 (webapiconfig.cs に xlsx を追加) を維持し、特定の URL を要求するとファイルを取得するにはどうすればよいですか?
ありがとう。ギレルモ。
c# - Web API での無効な JSONP リクエストの処理
Web API 2 サービス内でWebApiContrib.Formatting.Jsonpを使用し、さらにAPI ドキュメントとテスト用にSwaggerを使用しています。
Swaggerを介して JSONP メソッドをトリガーすると、次の行のファイルJsonpMediaTypeFormatter.csでサービスがクラッシュします。
1 つには、 Swaggerが JSONP 要求のコールバック名を指定できない理由がわかりません。しかし、もっと重要なことは、それが原因でサービスがクラッシュしたくないということです。
質問:
- サービス側でこのようなエラーをどのように処理できますか?
- Swaggerに JSONP リクエストを適切に送信させる方法はありますか? (すべての JSONP リクエストのコールバック名を事前に定義するようなものですか?)
asp.net - protobuf-net リクエストのデシリアライズ時の ArgumentOutOfRangeException
アプリケーションの 1 つの新しいバージョンをデプロイした後、WebApiContrib/protobuf-net から複数の ArgumentOutOfRangeException が発生するようになりました。以前は 1 回発生していましたが、デプロイ後はより頻繁に (5 ~ 10 回程度) 発生しました。リクエスト全体のうちのいくつかでのみ発生し、ローカルまたは他の環境でこれを再現できませんでした。複数のマシンでエラーが発生しました。
呼び出し元のアプリケーションは、protobuf コントラクトを使用して Nuget クラス ライブラリをインストールします。このコントラクトは、このリリースの呼び出し先アプリケーションで更新されています。一部のプロパティは削除され (ProtoMember.Tag は変更されません)、一部のプロパティは true ではなく IsRequired=false としてマークされました。
何が失敗しているのか、またはそれをさらに診断する方法について何か洞察を持っている人はいますか?
バージョン:
アップデート:
- ProtobufFormatter を WebApiContrib.Formatting から削除し、代わりに Serializer.Deserialize を使用してコードで直接逆シリアル化を実行しようとしました。それは効果がありませんでした。
- 次に、再試行を追加しました。stream.Position を 0 にリセットし、再度逆シリアル化します。それはうまくいきます。
- Request.Content を base64 文字列としてログに記録しています。そのコンテンツは問題なく逆シリアル化され、ローカルで再現しようとしても、何千ものリクエストがあっても何も失敗しません。