.NET 4.0 - CultureNotFoundException

Fer*_*ryt 42 .net-4.0

我已将ASP.NET MVC 2项目迁移到VS 2010 + .NET 4.0.现在当我启动应用程序时,我在IntelliTrace和Output/Gebug窗口中获得了很多"CultureNotFoundException":

mscorlib.dll中出现'System.Globalization.CultureNotFoundException'类型的第一次机会异常

我知道"第一次机会异常"意味着什么,但是当我尝试调试时(将"CultureNotFoundException"添加到Bebug/Exceptions [Thrown]中)为什么ex.被抛出我得到了这个详细的异常文本:

System.Globalization.CultureNotFoundException发生Message = Culture不受支持.参数名称:name designer是无效的区域性标识符.Source = mscorlib ParamName = name InvalidCultureName = designer StackTrace:at System.Globalization.CultureInfo..ctor(String name,Boolean useUserOverride)InnerException:

我想知道为什么.NET试图创建名为"designer"的CultureInfo?

不是bug吗?

Dav*_*haw 49

我在CultureName"UserCache"中遇到了类似的问题.要解决此问题,我删除了此处的所有文件夹:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
Run Code Online (Sandbox Code Playgroud)


Bri*_*ndy 25

对于有此问题的其他人,这通常是一个被忽略的异常.

转到"调试"菜单 - >"例外"...并确保为"例外"列表取消选中所有内容.

  • 忽略问题不是解决方案. (12认同)
  • 根据您的配置,也可以通过启用选项>调试>常规>"启用我的代码"下的"仅我的代码"选项来修复它 (3认同)

Ste*_*eri 19

这实际上是在System.Web中设计的(至少在.NET Framework v4.0之前),不一定是最好的方法,但它确实有效.

你可以在这里找到更详细的描述,但它基本上是因为ASP.NET检查每个文件夹以查看它是否包含附属程序集,否则抛出异常.

鉴于附属程序集位于具有可预测名称的文件夹中,人们会想知道为什么他们决定这样做而不是仅检查与模式匹配的文件夹,特别是因为与简单的条件检查相比,处理异常的计算量相当昂贵.


小智 16

我很好奇,看看是否有一些我个人可以做的事情来消除这种特殊的烦恼.

Exception是调用"System.Web.UI.Util.IsCultureName(name)"的副作用

第一次在我的MVC3应用程序中调用它是关于一个名为"UserCache"的目录,该目录与具有预期文化名称"en-US"等的几个目录位于同一目录中.Net正在尝试查找Satellite目录为申请.

它被多次调用,甚至与文化文件文件相关,例如"EditorLocalization.bg-BG.designer.cs"(实际上所有这些都在App_GlobalResources中).[代码在这里做的是获取App_GlobalResources中的所有文件,并查看文件是否以CultureName结尾,再次调用IsCultureName.

因此,没有什么可以真正做到的,以避免这种情况......在生产中,.cs类不在那里,也许它不会发生.不过,这肯定会减慢启动速度!

在任何情况下,在我看来,这是一个完全错误,微软抛出一个异常,"IsCultureName().


Chi*_*nke 9

转到 Visual Studio 中的调试 -> 选项并选中“仅我的代码”。


Fer*_*ryt -4

看来这个问题是 VS 2010 Beta 2 中的一个错误。

  • 这实际上是不正确的,这是 System.Web 中的一个错误,请参阅我的回复。 (5认同)