B. *_*non 12 c# globalization culture cultureinfo asp.net-web-api
我在这里的"返回"行有一个断点:
[HttpGet]
[Route("api/Test/{id1}/{id2}")]
public NRBQEntity GetTestMessage(String id1, String id2)
{
return NRBQClient.GetTestMessage(id1, id2);
}
Run Code Online (Sandbox Code Playgroud)
虽然它没有崩溃应用程序,当我达到这一点,我得到,
" Exception:Thrown:"不支持文化."(System.Globalization.CultureNotFoundException)抛出了System.Globalization.CultureNotFoundException:"不支持文化. "
试图支持哪种文化,为什么不支持这种文化,以及我应该做些什么来支持这种文化?
回答sphanley:
除了代表"BarbeQue的新骑士"之外,它还是一个"骨架"(现在)实体看起来像这样:
public class NRBQEntity
{
public NRBQEntity()
{
}
public String Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
对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<NRBQEntity>(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;
}
Run Code Online (Sandbox Code Playgroud)
......而且这个测试:
[TestFixture, Category(DRBCOMMON.UnitTests.Categories.IntegrationTest)]
public class NRBQClientIntegrationTests
{
[Test]
public void TestNRBQInterface()
{
var NRBQClient = IOC.container.Resolve<INRBQClient>();
var s = NRBQClient.GetTestMessage("GET", "SORTY");
Assert.Greater(s.Value.Length, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
试图支持哪种文化
在违规行周围放置一个try/catch并捕获异常.在catch块中放置一个断点并调试代码.检查抛出的CultureNotFoundException的InvalidCultureName属性.这将告诉您正在尝试使用哪种文化,但在系统中找不到.
为什么不支持
Windows有一套内置的Cultures(.NET 3.5中的CultureInfo类支持哪些文化?和http://msdn.microsoft.com/en-us/goglobal/bb896001.aspx).如果列出的文化InvalidCultureName不在列表中,则不受支持.
我应该做些什么来支持这种文化?
这取决于什么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并忽略它.