0

テスト中のアプリのペアがあります。1 つは ASP.NET Web API アプリ (.NET 4.5.1) です。.NET 3.5 C# デスクトップ アプリから呼び出す RESTful メソッドがいくつかあります。私がテストした最初の 2 つの RESTful メソッドは正常に動作しています。コードは、リポジトリのコンストラクターでデータをロードするために使用されるクエリを除いて、すべての RESTful メソッドで同じです。

サーバー/ Web APIアプリにlog4netをセットアップしました。while ループ (正確にはレコード #270) でサーバー内のレコードの読み取りを開始すると、サーバーは while ループの最後に到達し (これ以上レコードはありません)、catch ブロックには入らず、クライアントはを示します

"The remote server returned an error: (405) Method Not Allowed"

エラー ダイアログが表示され、データが返されません。

そのため、サーバー/Web API は問題なく動作しているように見えますが、明らかに問題があります。サーバーから保存されているlog4netエントリはありませんが、catchブロックでこのように設定しました:

catch (Exception ex)
{
    log.Error(ex.Message);
}

(そして、以前の例外のlog4netログファイルにいくつかのエントリがあるため、正しく機能しています/セットアップされています)。

クライアントのコードをステップ実行すると、次の行で失敗します。

var webResponse = (HttpWebResponse)webRequest.GetResponse();

繰り返しますが、これは他の動作中のメソッドに使用されているものとまったく同じコードです。この漠然とした「リモート サーバーがエラーを返しました: (405) メソッドは許可されていません」というコミュニケの本当の意味は何でしょうか? その例外をスロー/表示しているのはクライアントのcatchブロックですが、どこから来ているのでしょうか? Web API アプリとクライアント アプリの間から発生しているようです。IIS から発生している可能性がありますか?

4

1 に答える 1

1

両側で使用されている http 動詞が同じであることを確認できますか。通常、サーバーが POST を予期しているが、リクエストが GET を実行しようとすると、405 が返されます。また、サービスを使用するために使用されるコントローラーコードとコードを投稿すると役立ちます。

于 2013-10-25T19:56:33.157 に答える