2010-10-07 27 views
2

如果我嘗試在ASP.NET應用程序中使用新的maxRequestPathLength設置,它將無法工作。我收到一個無法識別的屬性錯誤。我曾嘗試在IIS 7中同時使用ASP.NET集成和經典應用程序池。還有一點很有趣的是,如果您在MSDN上搜索maxRequestPathLength,那麼除了ASP新功能列表之外,不會在文檔中找到哪裏.NET 4.什麼給了?maxRequestPathLength不在ASP.NET 4文檔中,不起作用

回答

1

顯然此設置名稱已更改並移至「HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ HTTP \ Parameters」下的註冊表。名稱是UrlSegmentMaxLength。默認值爲260.此特定設置限制了URL的每個路徑段中允許的字符數量。在https://stackoverflow.com/questions,「問題」將是一個路徑段。

此文檔可以在Microsoft知識庫文章http.sys registry settings中找到。

+0

不知道是誰投了我的答案,但很高興知道你爲什麼這樣做。回答自己的問題沒有什麼不妥,尤其是在提問之後的幾個月裏,人們努力找到自己的答案。 – 2011-05-25 13:54:37

+0

我不確定是否鮑勃(這不是我,但我也沒有upvote它)。我認爲我的回答更有用,因爲它不需要訪問註冊表(例如,在共享主機環境中非常罕見)。這是.NET特性之一,自從他們首次發佈有關它的信息以來似乎已經發生了一些變化。 – 2011-05-27 16:37:01

+0

+1 @Bob我遇到了同樣的問題。你有沒有發現添加註冊表項解決了這個問題?我正在運行IIS 7和IIS 7.我爲UrlSegmentMaxLength添加了註冊表DWORD,它沒有效果。 – 2011-11-22 23:17:43

2

這讓我有點受不了了。在.NET 4中做到這一點的方法是這樣的:

<httpRuntime maxUrlLength="1024" relaxedUrlToFileSystemMapping="true"/> 
在web.config的 <system.web>部分

。我這樣做,它的工作。

+0

這隻適用於本地cassini,而不是默認的IIS 7設置。如其他答案所示,需要在IIS上更改註冊表設置。 – 2013-08-14 11:25:10

2

我一直在努力與此和在這篇文章的幫助en幾個其他論壇發帖讓它爲我工作。這是我的日誌,並發現:

要允許更長的URL,然後默認情況下,只需要改變這在你的web.config(.NET 4.0及以上)

<httpRuntime maxUrlLength="1024" relaxedUrlToFileSystemMapping="true"/> 

注:如果relaxedUrlToFileSystemMapping設置TE爲false, urlsegments大於260會導致IOException異常PathTooLongException:

指定的路徑,文件名或這兩者太長。完全限定的文件名必須少於260個字符,且目錄名稱必須少於248個字符。

要允許更長的URL部分,則默認260添加/修改此註冊表設置: 「HKEY_LOCAL_MACHINE \系統\ CurrentControlSet \服務\ HTTP \參數」

名稱是UrlSegmentMaxLength。 (Dword)

和大多數重要的是更改此設置後。 REBOOT您的機器。 我試過IIS重置和淨停止http /網絡啓動http,但這並沒有使變化有效。

目前我有2臺機器可用。 我的本地開發人員(Windows 7/IIS 7.5)和開發服務器(Windows 2003/IIS 6.0) 兩個都重新啓動以使更改生效。

+0

確認:需要註冊表修復和重新啓動,我有一個MVC API端點,其中有太多參數,這是API文檔頁面所必需的。單獨的WebConfig在IIS Express中工作,但沒有在沒有註冊表修復的情況下部署過。 – sobelito 2015-02-28 00:07:58