.NET 4.0 - CultureNotFoundException

问题描述 投票:42回答:9

我已将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吗?

.net-4.0
9个回答
48
投票

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

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

-3
投票

似乎问题是VS 2010 Beta 2中的一个错误。


26
投票

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

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


19
投票

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

您可以找到更详细的描述here,但它基本上是因为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()。


4
投票

转到Visual Studio中的Debug - > Options并选中“Just My Code”。


1
投票

我对“CultureNotFoundException”有类似的问题。要解决此问题,我必须另外删除此处的所有文件夹:

%LocalAppData%\Local\Temp\Temporary ASP.NET Files

从这里删除是不够的:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

0
投票

我认为这是真正的设计师搞砸了。尝试在解决方案中搜索“designer”字符串,以查看是否有任何XML / HTML属性将其值设置为此字符串。


0
投票

我有这个错误消息:

'ViewBag.XXXXX'引发了类型'System.Globalization.CultureNotFoundException'的异常动态{System.Globalization.CultureNotFoundException}

内心的消息说:

不支持该文化。\ r \ n参数名称:name \ r \ nneutral是无效的标识符文化。

问题是AssemblyInfo.cs文件中的程序集文化定义无效:

[assembly: AssemblyCulture("neutral")]

要修复它,只需将“culture”参数留空,如下所示:

[assembly: AssemblyCulture("")]

这解决了我的问题。


0
投票

我发现在Visual Studio 2017选项的调试部分打开“启用我的代码”对我来说很有用。这只是隐藏了那些异常,这些异常是框架正常运行的一部分。

© www.soinside.com 2019 - 2024. All rights reserved.