1

我有一个包含一些上传字段的表单。在大多数位置,表格执行没有问题。但是对于某些地方(到目前为止,我已经在新加坡的 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 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17 Request Payload ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: form-data; 名称="身份证"

0 ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: form-data; 名称=“名称”

ewfwefwevv ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: form-data; 名称="网站"

------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: form-data; 名称="关于"

------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: form-data; 名称="迭代启用"

false ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: form-data; 名称="迭代下一个开始"

2013-01-28 ------WebKitFormBoundaryijq2AW8yKt0E8wSc 内容配置:表单数据;名称="迭代长度"

2 ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: form-data; 名称="迭代暂停"

0 ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: form-data; 名称="迭代总点数"

10 ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: form-data; 名称="迭代点比例"

0,1,2,3 ------WebKitFormBoundaryijq2AW8yKt0E8wSc Content-Disposition: form-data; name="IncentivesEnabled"

false ------WebKitFormBoundaryijq2AW8yKt0E8wSc-- Response Headersview source Cache-Control:private, s-maxage=0 Content-Length:143 Content-Type:text/html; charset=utf-8 日期:星期一,2013 年 1 月 21 日 14:53:20 GMT 位置:/bogdan-litescu/ewfwefwevv P3P:CP: NOI ADM DEV COM NAV 我们的 STP 服务器:Microsoft-IIS/8.0 Set-Cookie:.ASPXAUTH =BE19A758026293C73831096A1D96D428C08C60C45D20CDEED0F567E563F9EB0EC82B8FFA550D062605A7369EA00E78899E02075D2EFDC7319C71AA0574C3661A4E3F9D606FB731AD1EB8CEC6A41ACDB135692B9CFFA415BBE884E307B3D6F2DEFAC53F3F7B80B5B3671503D83FE22C4A41BDA967F83AF60E158E68B601CEC53CB760E256; 过期=格林威治标准时间 2013 年 8 月 9 日星期五 14:53:18;路径=/; 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 Request Headersview source 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; 名称="身份证"

0 ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: form-data; 名称=“名称”

wefewfwefw ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: form-data; 名称="图标"; filename="" 内容类型:应用程序/八位字节流

------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: form-data; 名称="标志"; filename="" 内容类型:应用程序/八位字节流

------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: form-data; 名称="网站"

------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: form-data; 名称="关于"

------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: form-data; 名称="迭代启用"

false ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: form-data; 名称="迭代下一个开始"

2013-01-28 ------WebKitFormBoundaryUq7yyIv4EnP2hJTA 内容处置:表单数据;名称="迭代长度"

2 ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: form-data; 名称="迭代暂停"

0 ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: form-data; 名称="迭代总点数"

10 ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: form-data; 名称="迭代点比例"

0,1,2,3 ------WebKitFormBoundaryUq7yyIv4EnP2hJTA Content-Disposition: form-data; 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");
}
4

1 回答 1

0

尝试设置

context.Response.BufferOutput = false; 

不要设置内容长度。

于 2013-01-21T16:01:00.853 回答