我们在一个特定的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。
换一种说法:
这不起作用,我们得到的只是错误404https://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
将参数放在您的网址上。我看到您使用空格,斜杠和逗号。带有斜杠/空格/逗号和其他无效网址字符的参数可能会被iis服务器之一上启用的网址过滤器剪切或更改。
关于asp.net - ASP.NET-莫名其妙的404错误的奇怪情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9200633/