我们在一个特定的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号。

另外,请注意,我将链接括在双引号中...,以便它们可以正确呈现...

最佳答案

使用UrlEncodeUrlDecode将参数放在您的网址上。我看到您使用空格,斜杠和逗号。带有斜杠/空格/逗号和其他无效网址字符的参数可能会被iis服务器之一上启用的网址过滤器剪切或更改。

关于asp.net - ASP.NET-莫名其妙的404错误的奇怪情况,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9200633/

10-12 06:49