Pourquoi reçois-je, “la Culture n'est pas pris en charge” et qu'est-Ce que dois-je Faire?
J'ai un point d'arrêt sur le "retour" de la ligne ici:
[HttpGet]
[Route("api/Test/{id1}/{id2}")]
public NRBQEntity GetTestMessage(String id1, String id2)
{
return NRBQClient.GetTestMessage(id1, id2);
}
Bien qu'il ne se bloque pas l'application, quand j'arrive à ce point, je reçois,
"Exception:Levée: "la Culture n'est pas pris en charge." (Le système.De la mondialisation.CultureNotFoundException)
D'Un Système.De la mondialisation.CultureNotFoundException était jeté: "la Culture n'est pas pris en charge.""
Dont la culture est d'essayer d'être pris en charge, pourquoi il n'est pas pris en charge, et de ce que, si quelque chose, dois-je faire pour soutenir la culture?
Mise à JOUR
Réponse à sphanley:
D'ailleurs pour les Nouveaux Coureurs du Barbecue," c'est un "squelette" (pour l'instant) de l'Entité qui ressemble à ceci:
public class NRBQEntity
{
public NRBQEntity()
{
}
public String Value { get; set; }
}
Mise à JOUR 2
Réponse à AnotherUser:
Ce n'est pas mon code, donc je suis juste en train d'essayer de grok il; elle a été fournie comme un point de départ pour moi de copier/refactoriser existante d'un projet autonome, intégrant au sein de "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(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;
}
...et ce test:
[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);
}
}
Ne vous/nous savons ce que
GetTestMessage
ressemble?googler il apporte plus de reproche à ce sujet et la cause peut être un bug dans le Système.Web - résolution peut être d'installer les mises à jour pour visual studio et .net framework. Par exemple: stackoverflow.com/questions/2116821/... Cependant, dans votre cas particulier, il peut aussi être un bug dans votre code personnalisé afin que les invalides de la culture le nom est passé à CultureInfo constructeur d'une manière ou d'une autre. Supplémentaires trace de la pile pourrait aider. Ainsi que plein de message. De sorte que sur la base de sa valeur, il serait plus facile à deviner.
vous ne nous donnez pas assez pour diagnostiquer le problème!
Placez le point d'arrêt et de voir de quelle culture vous en cours d'exécution. Si elle n'est pas
en-us
, avant de return
de le mettre sur le fil à en-us
. Voir ce qui se passe
OriginalL'auteur B. Clay Shannon | 2014-06-20
Vous devez vous connecter pour publier un commentaire.
Place un try /catch autour de la ligne incriminée et d'intercepter l'exception. Placez un point d'arrêt dans le bloc catch et de déboguer votre code. Examiner la levée CultureNotFoundException's
InvalidCultureName
de la propriété. Cela vous indiquera où la Culture est d'essayer d'être utilisé, mais n'est pas trouvé sur le système.Windows dispose d'un ensemble de Cultures (Quelles cultures sont pris en charge par la classe CultureInfo .NET 3.5? et http://msdn.microsoft.com/en-us/goglobal/bb896001.aspx). Si la Culture répertoriés dans
InvalidCultureName
n'est pas sur la liste, il n'est pas pris en charge.Cela dépend de ce que
InvalidCultureName
est. Si vous êtes légitimement en essayant d'utiliser une non-prise en charge de la culture (par exemple, vous avez un multi langues /multi site régional et souhaitez soutenir l'anglais pour chaque culture), vous pourriez avoir besoin légitime de créer une nouvelle culture. Par exemple, j'ai travaillé sur un site, http://www.oneill.com, où nous voulions avoir une version française des pays-bas site (http://www.oneill.com/nl-fr). Nous avons dû créer une nouvelle culture et de l'installer sur le serveur web à l'aide de ces instructions: http://msdn.microsoft.com/en-us/library/ms172469(v=vs. 90).aspxSi vous n'avez pas à faire toute la fantaisie de la culture des trucs, il y a quelques problèmes connus avec asp.net impliquant le cadre, à tort, la création de
CultureInfo
instances contre basés sur les répertoires qui pourraient ne pas être présents:Dans ce cas, on dirait que la solution est simplement de désactiver l'Exception et de l'ignorer.
OriginalL'auteur Philip Pittle
Vous pouvez vérifier tous les codes existants dans cette liste.
Vous pouvez créer une culture personnalisée, comme suit:
cet article explique comment le faire.
OriginalL'auteur Koby Douek