我们在一个特定的web服务器上遇到了一个非常奇怪的问题(我们无法直接访问web服务器,只能通过FTP访问)。
我们的ASP.NET应用程序将数据集显示到标准GridView中。GridView中的一列是一个基本模板列,其中一个链接重定向到另一个页面,只传递一些参数。
其中一个参数是EmployeeName
-下一页使用该参数设置标签。
在这个特定的web服务器上(本例中为WEBSERVER1)。。。结果链接生成错误404(未找到页面)
https://WWW.WEBSERVER1.COM/Customer_011B.aspx?WeekEnding=1/21/2012&GUID=n.a.&EmployeeName=Knutson-Haushalter, Kathleen&ReportToName=Mary Jo Eayrs&Assignment_Id=123772
在另一台web服务器(本例中为WEBSERVER2)上。。。生成的链接将正确打开页面。
http://WWW.WEBSERVER2.COM/Customer_011B.aspx?WeekEnding=1/21/2012&GUID=n.a.&EmployeeName=Knutson-Haushalter, Kathleen&ReportToName=Mary Jo Eayrs&Assignment_Id=123772
(不幸的是,上面的链接没有正确呈现
是的,我知道WEBSERVER1是在SSL下运行的,但不确定为什么这会有所不同。
现在,我们已经验证了Customer_011B.aspx页面确实存在于WEBSERVER1上。
谜题来了:
如果我们只删除EmployeeName参数,则页面将正确显示。所有数据库操作都正确执行,等等。唯一的"问题"是EmployeeName没有在目标标签中报告。
换句话说:
这不起作用,我们得到的只是错误404
https://WWW.WEBSERVER1.COM/Customer_011B.aspx?WeekEnding=1/21/2012&GUID=n.a.&EmployeeName=Knutson-Haushalter, Kathleen&ReportToName=Mary Jo Eayrs&Assignment_Id=123772
这确实有效,我们进入页面,检索所有需要的数据。
https://WWW.WEBSERVER1.COM/Customer_011B.aspx?WeekEnding=1/21/2012&GUID=n.a.&ReportToName=Mary Jo Eayrs&Assignment_Id=123772
如果您想知道,我们的数据访问层唯一需要的参数是Assignment_Id编号。
另外,请注意,我用双引号附上了链接。。。这样他们才能正确地渲染。。。
使用UrlEncode
和UrlDecode
将参数放置在url上。我看到你用空格、斜线和逗号。带有斜线/空格/逗号和其他无效url字符的参数可能会被其中一个iis服务器上启用的url筛选器剪切或更改。