2

「POST」を実行するために、Silverlight 2.0 で HttpWebRequest オブジェクトを使用しようとしています。

BeginGetStream メソッドから戻ると、次のエラーが発生します。

メッセージ: 「指定されたメソッドはサポートされていません。」
スタック トレース:「System.Net.BHWRAsyncResult.get_AsyncWaitHandle() で」

ここにいくつかのサンプル コードがあります: 注: フィドラーを使用して、ネットワーク経由で何かが送信されているかどうか、およびネットワーク アクティビティがないかどうかを確認しました。

        HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri("http://someurl"));
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        req.Accept = "text/plain, */*";
        req.Headers["X-Requested-With"] = "XMLHttpRequest";

        AsyncCallback callBack = new AsyncCallback(streamResponse);

        req.BeginGetRequestStream(callBack, null);

ありがとう、デイブ

4

2 に答える 2

4

この問題の解決策を1つ見つけました。HTTP クライアントは、Content-Length HTTP ヘッダー値を満たすために Content-Length を知る必要があります。クライアントは、長さが判明する前にリクエストを開始できません。RequestStream WebRequest を取得すると、サーバーに送信するバイト数を知ることができません。Content-Length をコミットするにはストリームを閉じる必要があり、RequestStream を閉じた後でのみ、BeginGetResponse を呼び出すことができます。これが WebRequest 内で行われないのは奇妙です。これが役に立てば幸いです、ドミトリー

于 2009-06-08T14:50:32.727 に答える
0

少し前にこれに遭遇しました。私の頭の上から:

1)呼び出しているサーバーにclientaccesspolicy.xml / crossdomain.xmlがありません。flash と同様に、silverlight は、flash を持たないドメインとは通信しません。

1.1) フィドラーは 404 エラーを記録しますか? そうでない場合、Silverlight がそれらのポリシー ファイルを取得しようとして失敗した試行が表示されません。

2) そうしないと、カスタム ヘッダーを送信すると問題が発生する可能性があります。

于 2009-03-28T23:26:29.097 に答える