我们在一个特定的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下运行 - 但我不确定为什么会产生影响。
现在,我们已经确认WEBSERVER1上确实存在Customer_011B.aspx页面。
这就是谜题:
如果我们只删除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编号。
另外,请注意我用双引号括起链接......这样它们就能正确呈现......
答案 0 :(得分:0)
使用UrlEncode
和UrlDecode
将参数放在您的网址上。我看到你使用空格和斜线和逗号。带有斜杠/空格/逗号和其他无效网址字符的参数可能会被其中一个iis服务器上的已启用网址过滤器剪切或更改。