为什么我会得到“文化不受支持”以及如果有什么,我该怎么做呢?

我在这里的“返回”行有一个断点:

[HttpGet] [Route("api/Test/{id1}/{id2}")] public NRBQEntity GetTestMessage(String id1, String id2) { return NRBQClient.GetTestMessage(id1, id2); } 

虽然它没有崩溃应用程序,当我达到这一点,我得到,

Exception:Thrown:”不支持文化。“(System.Globalization.CultureNotFoundException)抛出了System.Globalization.CultureNotFoundException:”不支持文化。

试图支持哪种文化,为什么不支持这种文化,以及我应该做些什么来支持这种文化?

UPDATE

回答斯潘利:

除了代表“BarbeQue的新骑士”之外,它还是一个“骨架”(现在)实体,看起来像这样:

 public class NRBQEntity { public NRBQEntity() { } public String Value { get; set; } } 

更新2

对AnotherUser的回答:

这不是我的代码,所以我只是在试图理解它; 它作为一个起点提供给我复制/重构现有的独立项目,并将其纳入“解决方案”。 已经说过,回答你的问题,这里是解决方案中“GetTestMessage()”的所有实例:

 [HttpGet] [Route("api/Test/{id1}/{id2}")] public NRBQEntity GetTestMessage(String id1, String id2) { return NRBQClient.GetTestMessage(id1, id2); } [HttpGet] [Route("api/Test/{id1}/{id2}")] public NRBQEntity GetTestMessage(String id1, String id2) { return NRBQService.GetNRBQEntity(id1, id2); } public interface INRBQClient { NRBQEntity GetTestMessage(String id1, String id2); } public NRBQEntity GetTestMessage(String id1, String id2) { var res = RESTAPIClient.GET(null , new Uri(NRBQClientSettings.NRBQAPI) , String.Format("api/Test/{0}/{1}" , id1 , id2) ); if (res.status != RequestResultStatus.Success) { throw new Exception(res.message); } return res.result; } 

……而且这个测试:

 [TestFixture, Category(DRBCOMMON.UnitTests.Categories.IntegrationTest)] public class NRBQClientIntegrationTests { [Test] public void TestNRBQInterface() { var NRBQClient = IOC.container.Resolve(); var s = NRBQClient.GetTestMessage("GET", "SORTY"); Assert.Greater(s.Value.Length, 0); } } 

试图支持哪种文化

在违规行周围放置一个try / catch并捕获exception。 在catch块中放置一个断点并调试代码。 检查抛出的CultureNotFoundExceptionInvalidCultureName属性。 这将告诉您正在尝试使用哪种文化,但在系统中找不到。

为什么不支持

Windows有一套内置的Cultures( .NET 3.5中的CultureInfo类支持哪些文化?和http://msdn.microsoft.com/en-us/goglobal/bb896001.aspx )。 如果InvalidCultureName列出的Culture不在列表中,则不受支持。

我应该做些什么来支持这种文化?

这取决于InvalidCultureName是什么。 如果您合法地尝试使用不受支持的文化(例如,您拥有多语言/多区域网站并希望为每种文化支持英语),您可能有合法需要创建新文化。 例如,我在一个网站http://www.oneill.com上工作 ,我们希望在那里有一个法国版的荷兰网站( http://www.oneill.com/nl-fr )。 我们必须使用以下说明创建一种新文化并将其安装在Web服务器上: http : //msdn.microsoft.com/en-us/library/ms172469(v = vs。90).aspx

如果你没有做任何花哨的文化内容,asp.net有一些已知的问题,涉及框架错误地根据可能不存在的目录创建CultureInfo实例:

在这种情况下,看起来解决方案就是关闭Exception并忽略它。

您可以检查此列表中的所有现有代码。

您可以创建自定义文化,如下所示:

 // Create a new colture, with the name you desire CultureAndRegionInfoBuilder cib = new CultureAndRegionInfoBuilder("en-IN", CultureAndRegionModifiers.None); // Load all defaults from en-US CultureInfo ci = new CultureInfo("en-US"); cib.LoadDataFromCultureInfo(ci); // Populate the new CultureAndRegionInfoBuilder object with region information. RegionInfo ri = new RegionInfo("US"); cib.LoadDataFromRegionInfo(ri); // Now you can make changes, or finish. // Changes can be currency, RegionName, etc. // Finish cib.Register(); 

本文将介绍如何执行此操作。