いくつかのアップロード フィールドを含むフォームがあります。ほとんどの場所から、フォームは問題なく実行されます。しかし、場所によっては (これまでシンガポールの 2 か所で個人的に経験したことがあります)、ファイルのアップロード フィールドが空のままであっても、ほとんどの場合、送信時にフォームがタイムアウトします。アップロード フィールドを削除すると、フォームはこれらの場所でも正常に機能します。
次のようにリクエストを追跡しました。正常に動作するフィールドのないフォーム:
リクエスト URL:http://opentraits.com/bogdan-litescu/communities/new2 リクエスト方法:POST ステータス コード:302 見つかりました リクエスト ヘッダービュー ソース 受け入れ:text/html,application/xhtml+xml,application/xml;q=0.9, /;q=0.8 Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8 キャッシュ-Control:max-age=0 Connection:keep-alive Content-Length:1180 Content-Type:multipart/form-data; 境界=----WebKitFormBoundaryijq2AW8yKt0E8wSc Cookie:ASP.NET_SessionId=...... ホスト:opentraits.com オリジン:http://opentraits.com リファラー:http://opentraits.com/bogdan-litescu/communities/new2 User-Agent:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.17 (Gecko のような KHTML) Chrome/24.0.1312.52 Safari/537.17 要求ペイロード ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: form-data; 名前="ID"
0 ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: フォームデータ; 名前="名前"
ewfwefwevv ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: フォーム データ。名前="ウェブサイト"
------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: フォームデータ; 名前="概要"
------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: フォームデータ; name="IterationEnabled"
false ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: フォームデータ; name="IterationNextStart"
2013-01-28 ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: フォーム データ。name="IterationLength"
2 ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: フォームデータ; name="IterationPause"
0 ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: フォームデータ; name="IterationTotalPoints"
10 ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: フォームデータ; name="IterationPointScale"
0,1,2,3 ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: フォーム データ。name="IncentivesEnabled"
false ------WebKitFormBoundaryijq2AW8yKt0E8wSc -- レスポンス ヘッダービュー ソース Cache-Control:private, s-maxage=0 Content-Length:143 Content-Type:text/html; charset=utf-8 Date:Mon, 21 Jan 2013 14:53:20 GMT Location:/bogdan-litescu/ewfwefwevv P3P:CP: NOI ADM DEV COM NAV OUR STP Server:Microsoft-IIS/8.0 Set-Cookie:.ASPXAUTH =BE19A758026293C73831096A1D96D428C08C60C45D20CDEED0F567E563F9EB0EC82B8FFA550D062605A7369EA00E78899E02075D2EFDC7319C71AA0574C3661A4E3F9D606FB731AD1EB8CEC6A41ACDB135692B9CFFA415BBE884E307B3D6F2DEFAC53F3F7B80B5B3671503D83FE22C4A41BDA967F83AF60E158E68B601CEC53CB760E256; expires=Fri, 09-Aug-2013 14:53:18 GMT; パス=/; HttpOnly X-AspNet-Version:4.0.30319 X-AspNetMvc-Version:4.0 X-Powered-By:ASP.NET
タイムアウトするアップロード フィールドを含むフォームの場合:
リクエスト URL:http://opentraits.com/bogdan-litescu/communities/new リクエスト ヘッダービュー ソース Accept:text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8 Content-Type:マルチパート/フォームデータ; 境界=----WebKitFormBoundaryUq7yyIv4EnP2hJTA オリジン:http://opentraits.com リファラー:http://opentraits.com/bogdan-litescu/communities/new ユーザーエージェント:Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.17 (KHTML、Gecko など) Chrome/24.0.1312.52 Safari/537.17 要求ペイロード ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: form-data; 名前="ID"
0 ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: フォームデータ; 名前="名前"
wefewfwefw ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: フォーム データ。名前="アイコン"; filename="" コンテンツ タイプ: アプリケーション/オクテット ストリーム
------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: フォームデータ; 名前="ロゴ"; filename="" コンテンツ タイプ: アプリケーション/オクテット ストリーム
------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: フォームデータ; 名前="ウェブサイト"
------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: フォームデータ; 名前="概要"
------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: フォームデータ; name="IterationEnabled"
false ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: フォームデータ; name="IterationNextStart"
2013-01-28 ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: フォームデータ; name="IterationLength"
2 ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: フォームデータ; name="IterationPause"
0 ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: フォームデータ; name="IterationTotalPoints"
10 ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: フォームデータ; name="IterationPointScale"
0,1,2,3 ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: フォームデータ; name="IncentivesEnabled"
false ------WebKitFormBoundaryUq7yyIv4EnP2hJTA--
そのため、アップロード フィールドをフォームに配置するだけで、多くのリクエスト ヘッダーがポストに送信されなくなります。私はデバッグのアイデアを使い果たしました。Asp.Net MVC、Azure、インターネット プロバイダーに関連していますか? 一部の場所でのみ、一部のヘッダーがリクエストと共に送信されないのはなぜですか?
これを理解するための助けは大歓迎です!
アップデート
http://opentraits.com/test.htmlにあるプレーンな html ファイルにフォームを分離しました 。バックエンドは、test.html へのリダイレクトにすぎません。私の場所から試してみると、一部のリクエストヘッダーが渡されず、リクエストがタイムアウトすることがわかります。他の場所からリモート デスクトップを試してみると、問題なく動作します。ヘッダーはすべてそこにあり、test.html にリダイレクトされます。
Update2 バックエンドは Asp.NET MVC モデルです。
public class CommunityModel { public int Id { get; set; } [Required] [StringLength(255, ErrorMessage = "The {0} must be less than {1} characters long.")] public string Name { get; set; } [StringLength(255, ErrorMessage = "The {0} must be less than {1} characters long.")] public string Website { get; set; } [StringLength(1000, ErrorMessage = "The {0} must be less than {1} characters long.")] public string About { get; set; } public HttpPostedFileBase Icon { get; set; } public HttpPostedFileBase Logo { get; set; } .................... }
次に、単純なリダイレクトを使用してコントローラーで処理します。
[HttpPost] public ActionResult New2(string entityId, CommunityModel communityModel) { return new RedirectResult("/test.html"); }