异常:HRESULT: 0x80070057 (E_INVALIDARG) 的处理
碰到这个异常的原因很偶然:
现象:
Solution在ReBuild过程中断电了,来电恢复了,重析编译整个Solution不报错,但在浏览页面时始终无法正常浏览,而在design的视图中,每个aspx的首行代码都报错。
http://www.dezai.cn/blog/article.asp?id=355
解决过程:
搜索找到很多国内的方案,有的建议重新引用AjaxControlToolkit.dll,还有就是清除asp.net的缓存文件,但都没有看到想要的效果,最后在一个国外MSDN的贴子(http://social.msdn.microsoft.com/Forums/en-US/csharpide/thread/352c58ec-65d8-4d77-ac7b-d2338c621ef3)中看到种种处理办法.
相关方法可以尝试一下,不能保证所有的方案都能达到效果,但应该也八九不离十了吧。呵呵。
方案1:清空Temporary ASP.NET Files文件夹的文件,重新编译
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\MyWebService and recompiled and it worked fine.
这个方法是网上推荐得最多的方案,好像也可行,也不可行。里面有些文件不能直接删除,需要通过特殊手段进行删除。
方案2:卸载系统上所有的Net Framework的版本,IIS,重新安装Net Framework,IIS
这个方法好像比较麻烦,而且也不太能确定能达到解决异常的效果。就网上看到的结果而言,大多数人这样操作并没有解决问题。这里要注意安装的顺序
?Uninstall .NET (Runtime and SDK)->Uninstall IIS->Install .NET (Runtime and SDK)->Install IIS
方案3:这个方法我没看懂,就不解释了,貌似比较复杂Background: The assembly causing me trouble was built in house and I did not have the source code.
Required: You need the Visual Studio SDK for ildasm.exe
Steps:
1.) Disassemble the .dll with the command ildasm.exe AssemblyName.dll /out:AssemblyName.il
2.) Open the newly created AssemblyName.il with a text editor and search for "permissionset"
3.) Find and delete the following lines:
.permissionset reqmin
= {[mscorlib]System.Security.Permissions.PermissionSetAttribute = {property string 'Name' = string('nobody')},
[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'Execution' = bool(true)}}
4.) Save and rebuild the assembly with the following command: ilasm.exe AssemblyName.il /dll
5.) Throw the new dll in your bin directory or if it's strong named and needed in the GAC you can put it there.
方案4:清除 系统盘:\用户\用户名称\AppData\Local\Temp\Temporary ASP.NET Files里面的文件
C:\Users\<name>\AppData\Local\Temp\Temporary ASP.NET Files
我是用这个方案搞掂的,恰巧我的是win7的系统.不过好像这个与方案1配合使用较好.注意:Vista系统与Window7系统这个尤为适合