2010-06-28 93 views
3

谷歌的網站管理員工具已經開始顯示我的網站的一些非常奇怪的內部鏈接。它看起來「正常」,但我不知道該怎麼做。如果你使用圓括號並放入一個單獨的字母,然後在字面上將任何東西放在括號中,鏈接就起作用。我搜索了任何其他MVC網站,以便我可以看到它們是否具有相同的行爲。微軟的網站也出現在名單的頂端,並有一個奇怪的鏈接。搜索詞條是「asp.net mvc的網站」,我得到了第一個鏈接是爲:奇怪的ASP.NET MVC鏈接(A(anythingworksherehere))

http://www.asp.net/(S(d35rmemuuono1wvm1gsp2n45))/mvc

我不喜歡這樣的。您可以將S更改爲A或任何其他字母,然後在下一部分中放入您想要的任何文本。任何人都知道如何阻止它?對於我的生活,我看不到我的路線有任何問題。我使用MVC,所以我不會有奇怪的URL在搜索引擎中浮動,所以這非常令人失望。

最近我可以從Google的「內部鏈接」列表中猜出它可能是一個cookie。但是當我在我的網站上查看源代碼時,我找不到任何情況,除了正確的相關鏈接外,其他任何東西都看不到。

+0

這看起來很奇怪。我相信你已經檢查過了,但是如果你的代碼有一件事可以檢查,那就是確認你沒有在linkgeneration中交換routeValues和htmlProperties參數。 – Terje 2010-06-28 18:23:11

+0

我會再次檢查,但我仍然無法讓我的網站生成這樣的鏈接。如果谷歌沒有記錄他們,我永遠不會知道這甚至是可能的。我不確定能否將隨機數據放入www.asp.net的鏈接讓我感覺更好,或者更擔心我... – 2010-06-28 18:29:57

+0

我測試了更多被識別爲ASP.NET MVC的站點並注入了http://www.somehost.com/(A(whatever-text-you-want))/validlink到所有這些URL的作品。 – 2010-06-28 18:37:54

回答

1

看起來像無cookie會話打開時使用的會話ID格式(Web.config中的<sessionState cookieless="true" />)。這似乎是一般的ASP.NET行爲,不僅僅是MVC,因爲我可以用VS 2010中的標準3.5網站項目重現此行爲。

似乎ASP.NET將以該形式處理值,如它是一個會話ID,即使您沒有打開無cookie會話。

很難在沒有看到您的實際網站配置和日誌的情況下診斷情況,但如果我必須猜測,我會說Google的網站管理員工具沒有將請求中的會話cookie返回到您的網站,所以網站正在回落到無cookie方法,以維持會話。

+0

www.asp.net網絡論壇中的某人也建議使用無Cookie會話,但我不認爲這是個問題。如果我製作一個簡單地使用host.com/(session_variable)/ invalid-link的URL,則不起作用。我必須有這個奇怪的東西(A(測試文本)),第一部分只包含一個字母。如果我做到了(AA(測試文本)),它就會失敗。我現在向Web.config添加了(我之前沒有條目),行爲也是一樣的。 – 2010-06-28 20:39:32

+0

那麼,我應該說手動注入文本仍然工作是一樣的我從來沒有能夠複製谷歌如何得到這些網址,所以你可以是正確的,我真的不知道如果這是無cookie =「錯誤」的事情那麼它會很好,如果修復它。現在我仍然擔心(A(測試文本))仍然適用於我嘗試過的每個MVC站點。:-( – 2010-06-28 20:45:03

+0

'host.com/( session-id)/ x'是.NET 1.1格式,從2.0開始,它切換到'host.com/(S(激情 - id))/ x'格式,看起來任何大寫字符都可以代替「S」。ASP.NET似乎總是以這種格式處理URL作爲無Cookie會話ID,即使你不打算使用它們,你可以在任何ASP.NET 2.0+站點上重現行爲,已經能夠確定。 – 2010-06-28 21:04:25