1

「カスタム エラー」をオフにして、Cassini の異なるインスタンスで同じマシン上で実行されている 2 つの ASP.NET アプリケーションをデバッグしています。1 つのアプリがポート 100 で実行されGETており、ポート 90 で実行されている他のアプリからの要求を実行しようとしています。したがって、次のコードを実行します。

WebRequest request = WebRequest.Create(
   "http://localhost:90/Controller/Action?Param1=foo&Param2=bar");
request.Timeout = 10000;
request.GetResponse();

最後の行はWebExceptionwithHTTP 400コードと null の InnerException をスローします。まったく同じ URL をクリップボードにコピーし、同じマシンで実行されている IE に貼り付けると、リクエストはポート 90 でアプリのキューに入れられ、そのアプリ/Controller/Action/が呼び出され、パラメーターも正常に渡されます。

ここで問題の原因は何ですか?どうすれば解決できますか?

4

3 に答える 3

1

URLにパラメータを入れずに試してみるべきだと思います。

WebRequest request = WebRequest.Create("localhost:90/Controller/Action");
request.Timeout = 10000;
request.GetResponse();

機能する場合は、パラメーターの使用を許可するためにいくつかのユーザー エージェント ヘッダーを追加する必要があります。

また、おそらく WebClient を確認する必要があります。 MSDN

個人的には、IISExpress または IIS を使用してこの種のソリューションを開発することも考えています。

ここで部外者の観察にすぎませんが、ブラウザーから ajax 呼び出しを介して 2 番目の webmethod にこの呼び出しを行い、javascript (jQuery) を使用してクライアント側で結果を集計することを検討してください。

于 2011-12-19T07:12:30.000 に答える
1

URI オブジェクトを受け取る WebRequest.Createのオーバーロードを使用してみます。これにより、指の太い URL を除外できます。

于 2011-12-19T08:03:47.380 に答える
0

2 時間のデバッグ - ポート 90 のサービスはポート 100 のサービスにリクエストをリダイレクトするが、URL に必要なパラメーターを提供しないことが判明したため、ポート 100 のサービスのハンドラーは例外をスローし、によって報告された HTTP 400 を返しますGetResponse()。解決策は、この特定の要求に対してリダイレクトが意味をなさないため、この特定の要求に対してリダイレクトがないようにロジックを変更することでした。

そして陪審員は、Cassini と ASP.NET の両方が無罪であると判断しました。

于 2011-12-19T09:35:19.203 に答える