Pourquoi est-ce que je reçois «La culture n’est pas supscope» et que dois-je faire si quelque chose à ce sujet?

J’ai un point d’arrêt sur la ligne “retour” ici:

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

Bien que l’application ne se bloque pas, lorsque j’arrive à ce point, je reçois,

Exception: Lancé:” La culture n’est pas prise en charge. “(System.Globalization.CultureNotFoundException) Une exception System.Globalization.CultureNotFoundException a été levée:” La culture n’est pas prise en charge. “

Quelle culture tente d’être soutenue, pourquoi ne l’est-elle pas et que dois-je faire, le cas échéant, pour soutenir cette culture?

METTRE À JOUR

Réponse à sphanley:

En plus de représenter “Nouveaux Cavaliers de la BarbeQue”, c’est un “squelette” (pour l’instant) qui ressemble à ceci:

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

MISE À JOUR 2

Répondre à AnotherUser:

Ce n’est pas mon code, je suis donc en train d’essayer de le saisir; il m’a été fourni comme sharepoint départ pour copier / restructurer un projet autonome existant, en l’intégrant dans “la” solution. Cela dit, pour répondre à votre question, voici toutes les instances de “GetTestMessage ()” dans la solution:

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

… et ce test:

 [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); } } 

Quelle culture tente d’être soutenue

Placez un essai / attraper autour de la ligne fautive et attraper l’exception. Placez un point d’arrêt dans le bloc catch et corrigez votre code. Examinez la propriété InvalidCultureName CultureNotFoundException InvalidCultureName . Cela vous indiquera quelle culture tente d’être utilisée mais ne se trouve pas sur le système.

Pourquoi n’est-il pas pris en charge

Windows possède un ensemble de cultures intégré ( Quelles cultures sont sockets en charge par la classe CultureInfo dans .NET 3.5? Et http://msdn.microsoft.com/en-us/goglobal/bb896001.aspx ). Si la culture répertoriée dans InvalidCultureName ne figure pas dans la liste, elle n’est pas prise en charge.

Que dois-je faire, le cas échéant, pour soutenir la culture?

Cela dépend de ce qu’est InvalidCultureName . Si vous essayez légitimement d’utiliser une culture non prise en charge (par exemple, vous avez un site multilingue / multirégional et souhaitez soutenir l’anglais pour toutes les cultures), vous pouvez avoir un besoin légitime de créer une nouvelle culture. Par exemple, j’ai travaillé sur un site, http://www.oneill.com , où nous voulions une version française du site néerlandais ( http://www.oneill.com/nl-fr ). Nous avons dû créer une nouvelle culture et l’installer sur le serveur Web à l’aide des instructions suivantes: http://msdn.microsoft.com/en-us/library/ms172469(v=vs.90).aspx

Si vous ne faites pas de choses sur la culture de fantaisie, il existe des problèmes connus avec asp.net, impliquant la structure qui crée par erreur des instances de CultureInfo sur la base de répertoires qui pourraient ne pas être présents:

Dans ce cas, la solution consiste simplement à désactiver l’exception et à l’ignorer.

Vous pouvez vérifier tous les codes existants dans cette liste .

Vous pouvez créer une culture personnalisée, comme suit:

 // 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(); 

Cet article explique comment procéder.