問題タブ [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.

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

c# - WebApiContribを使用したルートテスト

テストしようとしているWebApiプロジェクトがあります。私はコントローラーを持っています-

ルートをテストする必要があり、WebApiContrib.Testingパッケージを使用しようとしています。

さて、私の問題は、ルートを登録するときにGlobalConfiguration.Configuration.Routes、タイプがを使用することですHttpRouteCollection

私のテストでは、アクセスできますRouteTable.Routesが、これはタイプRouteCollectionです。

その結果、このタイプの非互換性のために、WebApiルートをテストに登録できません。

誰かが以前にこの問題に遭遇したことがありますか?私が行方不明になっていることは明らかですか?

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

c# - DelegatingHandler に応答ヘッダーがありません

Web API プロジェクトの HTTP 応答ヘッダーをログに記録しようとしています。

このプロジェクトは、VS2012、.NET 4.5、および ASP.NET MVC 4 によって開発されています。

次のDelegatingHandlerようなサブクラスを作成しました。

ただし、問題は、からヘッダー値を取得できないことresponseです。response.Headersは空のコレクションで、response.Content.Headersという名前のキーだけが含まれてContent-Typeおり、HttpContext.Currentnullです。

同じロジックを使用してヘッダーをログに記録するWebAPIContribのコードを見てきましたが、それらのコードも機能していないようです。

では、Web API プロジェクトで HTTP 応答ヘッダーをトレースするにはどうすればよいでしょうか?

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

c# - webapicontrib.formatting.xlsx を使用した content-type の使用

webapi2 と webapicontrib.formatting.xlsx を使用して Excel ファイルを作成しています。

この行を webapiconfig.cs に追加すると、問題なく動作します

しかし、その後、デフォルトのコンテンツ ネゴシエーションの可能性が失われます。つまり、json として、またはブラウザーから (xml を期待して) 何かを要求すると、常にバイナリが取得されるため、その行を削除しました (デフォルトの動作を好みます)。

リクエストに追加してみました:

ただし、ファイルを取得するのではなく、json フォーマッタを使用します。

デフォルトのフォーマッタの動作 (webapiconfig.cs に xlsx を追加) を維持し、特定の URL を要求するとファイルを取得するにはどうすればよいですか?

ありがとう。ギレルモ。

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

c# - Web API での無効な JSONP リクエストの処理

Web API 2 サービス内でWebApiContrib.Formatting.Jsonpを使用し、さらにAPI ドキュメントとテスト用にSwaggerを使用しています。

Swaggerを介して JSONP メソッドをトリガーすると、次の行のファイルJsonpMediaTypeFormatter.csでサービスがクラッシュします。

1 つには、 Swaggerが JSONP 要求のコールバック名を指定できない理由がわかりません。しかし、もっと重要なことは、それが原因でサービスがクラッシュしたくないということです。

質問:

  • サービス側でこのようなエラーをどのように処理できますか?
  • Swaggerに JSONP リクエストを適切に送信させる方法はありますか? (すべての JSONP リクエストのコールバック名を事前に定義するようなものですか?)
0 投票する
0 に答える
294 参照

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 文字列としてログに記録しています。そのコンテンツは問題なく逆シリアル化され、ローカルで再現しようとしても、何千ものリクエストがあっても何も失敗しません。