2012-02-08 45 views
3

我們在一臺特定的Web服務器上有一個很奇怪的問題(我們沒有直接訪問Web服務器,只有FTP訪問)。ASP.NET - 奇怪的404錯誤案例

我們的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數。

另外請注意,我用雙引號的鏈接...使他們正確地呈現...

+0

這很奇怪。也許webserver1上的頁面/代碼不同?什麼是IIS日誌說404的? – 2012-02-08 20:15:05

+0

這是否工作: 「https://WWW.WEBSERVER1.COM/Customer_011B.aspx?WeekEnding=1/21/2012&GUID=na&EmployeeName=Knutson-Haushalter%2C凱瑟琳&ReportToName =瑪麗·喬·埃爾斯與Assignment_Id = 123772」 確定,所以它贏得不要評論格式。我用逗號替換了html代碼%2C – Malk 2012-02-08 20:17:22

+0

這兩個事情在URL中用'EmployeeName'突出顯示 - 短劃線(檢查它實際上是連字符而不是n-dash)和逗號。逗號是URL中的一個保留字符,意思是它可以工作,但它可能不會 - 取決於Web服務器和服務器的設置。可能是問題。 – JimmiTh 2012-02-08 20:18:39

回答

0

使用UrlEncodeUrlDecode放置參數應用在你的網址。我看到你使用空格和斜槓和逗號。使用斜槓/空格/逗號和其他無效url字符的參數可能會在iis服務器上啓用url過濾器進行剪切或更改。