2015年5月15日 星期五

[C#] System.Web.HttpException: URL 編碼型式資料無效。


System.Web.HttpException: URL 編碼型式資料無效。 ---> System.InvalidOperationException: 由於該物件目前的狀態,導致作業無效。


經查證後,發現是2012年一月左右,微軟針對.NET做了資安漏洞更新,於客戶端POST回來的參數資料數有了限制;

該設定的默認值剛好為「1000」,如果是.NET 2.0以上的版本,請修改 web.config ,並在 <appSettings> 區段加上 aspnet:MaxHttpCollectionKeys 即可:
<appSettings> 
  <add key="aspnet:MaxHttpCollectionKeys" value="2500" /> 
</appSettings>


如果要在 .NET 1.1放寬限制,則須做以下設定 (需將機器重開機):

注意 如果您是在 x86 系統上使用 ASP.NET 1.1,請將 DWORD 值新增到下列登錄機碼來調整此設定:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys
如果您是在 x64 系統上使用 ASP.NET 1.1,請將 DWORD 值新增到下列登錄機碼來調整此設定:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\1.1.4322.0\MaxHttpCollectionKeys


參考資料:

https://support.microsoft.com/zh-tw/kb/2661403/zh-tw

http://blog.miniasp.com/post/2012/01/01/Efficient-Denial-of-Service-Attacks-on-Web-Application-Platforms.aspx



 

MangoHost Copyright © 2009 Cookiez is Designed by Ipietoon for Free Blogger Template