WebRequestを使用してSilverlightアプリケーションと同じWebサイトのWebページにHTTP POST要求を行うSilverlight(v3)アプリケーションがあります。このHTTPリクエストは、同じWebサイトの別のページに302(リダイレクト)を返します。HttpWebRequestは、自動的に(according to the documentation)とされます。HttpWebRequestは、Internet Explorerで302の404を返す
要求を(それがブラウザのHTTPスタックを使用し、別の作り付けのSilverlightのHTTPスタックを使用するように設定されていない)を行うコードについて特に特別なものは何もありません:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Format("{0}?name={1}&size={2}", _UploadUrl, Uri.EscapeUriString(Name), TotalBytes));
request.Method = "POST";
すべてこれはFirefoxで正常に動作しますとクロム; SilverlightはPOST HTTPリクエストを作成し、302のレスポンスを受信し、指定されたリダイレクトURLのGET HTTPリクエストを自動的に行い、それを私に返します(これはHTTPリクエストの処理をFiddlerで行ったためです)。 ただし、Internet Explorer(v8)では、SilverlightがPOST HTTP要求を行い、404エラーコードでWebExceptionをスローします。
Fiddlerを使用すると、Silverlight/Internet Explorerが要求の302ステータスコードを正常に返すことがわかりました。私がSilverlightで取得した404ステータスコード(および関連WebException)は、ブラウザースタックを介して行われるHTTP要求は、制限のために200または404だけを返すことができます。実際の質問はで、他のブラウザのようにInternet Explorerがリダイレクトしないのはなぜですか??
ありがとうございました!
EDIT:それによって発行された私の知識の要求に批判的I ASP.NET認証Cookieなど、ブラウザのセッションの一部であるクッキーを、含まれていないので、私はSilverlightのクライアントHTTPスタックを使用しないだろうSilverlightコントロールによって行われているHTTP要求にアタッチする必要があります。
EDIT 2:私は、Internet ExplorerがPOST要求を行うときにのみこの動作を行うことを発見しました。 GETリクエストは正常にリダイレクトされます。これは、Post-Redirect-GetスタイルでいくつのWebサイトが現在何をしているかを考えると、かなり悪い振る舞いのようです。
この奇妙な動作を示す単純なdemo VS2008 solutionを作成しました。基本的なASP.NET MVC 1プロジェクトとSilverlight 3プロジェクトが含まれています。 WebサイトのSilverlightControlTestPage.htmlページに移動して、問題の実際の状況を確認します。
リダイレクトされたURLは、POSTされたサーバーとXapから来たリソースを指していますか? – AnthonyWJones
私が知る限り、ChromeとFirefoxは資格情報を別々に扱うかもしれません。資格情報について何かありますか?要求されたURLは匿名または認証された要求を受け入れますか? HTTPコードのサーバーアクセスログを確認しましたか? – JoeBilly
クライアントHTTP処理機能を使用できますか?そうすれば、すべてのステータスコードにアクセスできます。 http://msdn.microsoft.com/en-us/library/cc838250(v=VS.95).aspx – feroze