我正在 Windows XP 中尝试使用 IISExpress 7 为 ASP .NET MVC2 应用程序处理来自互联网的请求
我更改了 iisexpress 7 applicationhost.config 中的行
<binding protocol="http" bindingInformation=":8080:localhost" />
到
<binding protocol="http" bindingInformation=":80:" />
要求
GET http://1.2.3.4/Grid/Validate?_column=Toode&_entity=RidO&Toode=ooooo HTTP/1.1
Cookie: active=1; .EevaAuth=CF57FC098F341A1230626D5E339C9E94FE2D77157AAE54402DC2AB5F1AE1E079A9CB93B88B5479B4E926D3C6CDFF7D994E8FA1381CA32D20245A2A9C493B992F2E8863EA6C8E080886EDA103926096CB83B033490552F3CB9BFF62ABD5CFBA5181F378888BFF96D51400319AF8955B556D50A866
Host: 1.2.3.4
来自互联网导致错误请求错误:
HTTP/1.1 400 Bad Request
Cache-Control: private, s-maxage=0
Content-Type: text/html
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 2.0
X-AspNet-Version: 2.0.50727
X-Powered-By: Eeva ERP
Date: Thu, 24 Nov 2011 11:52:30 GMT
Content-Length: 11
Bad Request
如果请求是从 localhost 发出的,则不会发生此异常。我找到的所有解决方案都描述这是由 url 中的广告字符引起的。如果此请求http://1.2.3.4/Grid/Validate
(ip 地址已更改)不包含无效字符,则 URL 会出错。
如何允许处理此网络请求?
答案1
检查 C:\inetpub\logs\wmsvc# 处的 IIS 日志。您的请求可能带有 HTML 编码字符,而不是 URL 编码,如下所示:
http://1.2.3.4/Grid/Validate?_column=Toode&_entity=RidO&Toode=ooooo
如果不是这样,这微软知识库这篇文章可能会对您有所帮助(它指出的是 Windows Server 2003,但如果我没记错的话,它也适用于 XP)。