2017-07-26 17 views
0

異なるロケールからのリクエストに対して別のmsgを返そうとしています。以下のサンプルコードは、OAuthの自己ホストアプリケーション(.exeアプリケーション)の一部です。テキスト文字列ASP.NET WEB APIのローカリゼーション2自己ホストアプリケーション

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) 
{ 
     string culture = "zh"; 
     CultureInfo ci = new CultureInfo(culture); 
     Thread.CurrentThread.CurrentUICulture = ci; 
     Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(ci.Name); 
     Resources.Culture = ci; 
     context.SetError("invalid_grant", Resources.UserNameOrPwdError_ErrorMsg); 
      // omit other stuff.... 
} 

そしてまた、私が試した:

var testStr = Resources.ResourceManager.GetString("UserNameOrPwdError_ErrorMsg", ci); 

両方のケースがreturユーザー名とパスワードを使用して、要求のために資格を付与し、ために簡素化、私は、ハード中国でzhにロケールをコード化テキスト英語テキスト。

ところで、私は私のApp.configファイル(セルフホストがweb.configファイルを持っていない)にsystem.webセクションを追加しました:私は中国のテキストリソースをどこに置くかわからないんだけど

<system.web> 
     <globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true"></globalization> 
    </system.web> 

なぜなら、これは従来のASP.NETプロジェクトではなく、それらを持っていないからです。特別なプロジェクトフォルダ、Projectフォルダ構造を見て、デフォルトの存在以外のファイルを置いて、変換されたキー/ Access Modiferを一般公開する:

enter image description here

残りのクライアントでテストした場合、返される文字列は常に英語ですが、誰でも手助けできますか?

答えて

0

スクリーンショットから、私はAuthServiceがクラスライブラリであると仮定します。

個人的には、私のresxファイルはResourcesという名前の別のフォルダに置かれています。

あなたはただのResourceManagerを使用することができ、あなたのコードでは

//Namespace.Folder.File.Resourcemanager 
AuthService.Resources.Resources.ResourceManager.GetString("ResourceKey", ci); 

あなたが公衆にあなたのRESXファイルのアクセス修飾子を設定していることを、確認してください。デフォルトは内部です。

リソースをAsp.Net Webアプリケーションプロジェクトに追加する場合は、ソリューションエクスプローラでプロジェクトを右クリックし、[フォルダを追加]に移動してApp_GlobalResourcesフォルダを追加します。そこにあなたのresxファイルを入れてください。

0

私はこれがあなたを助けてくれることを願っています!

てみあなたのweb.configファイル内の行の下に追加する(system.webセクション)

<globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true"></globalization> 

あなたが新しい現在の文化をインスタンス化する必要があります。

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) 
    { 
     string culture = "zh"; 
     Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(culture); 
     Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; 
     context.SetError("invalid_grant", Resources.UserNameOrPwdError_ErrorMsg); 
    } 
+0

@Marcoの回答によれば、res_xファイルをApp_GlobalResourcesフォルダに移動することをお勧めします。 –

関連する問題