2

ページにリソース マネージャーを作成し、リソース ファイルに保存されているデータを使用したいと考えています。(default.aspx.resx および default.aspx.en.resx)

コードは次のようになります。

System.Resources.ResourceManager myResourceManager = System.Resources.ResourceManager.CreateFileBasedResourceManager("resource", 
               Server.MapPath("App_LocalResources") + Path.DirectorySeparatorChar, null);

    if (User.Identity.IsAuthenticated)
    {
        Welcome.Text =  myResourceManager.GetString("LoggedInWelcomeText");
    }
    else
    {
        Welcome.Text = myResourceManager.GetString("LoggedOutWelcomeText");
    }

しかし、ローカルサーバーでコンパイルして実行すると、次のタイプのエラーが発生します。

指定されたカルチャ (またはニュートラル カルチャ) に適したリソースがディスク上に見つかりませんでした。baseName: resource locationInfo: fileName: resource.resources 説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.Resources.MissingManifestResourceException: ディスク上の指定されたカルチャ (またはニュートラル カルチャ) に適したリソースが見つかりませんでした。baseName: リソースの場所Info: fileName: resource.resources

ソース エラー:

89 行目: else 90 行目: { 91 行目: Welcome.Text = myResourceManager.GetString("LoggedOutWelcomeText"); 92行目: } 93行目:

この問題について私を助けてもらえますか?

4

2 に答える 2

3

System.Web.Page のベースの一部であるGetLocalResourceObject()を使用します。グローバル リソースにアクセスする場合は、GetGlobalResourceObject() を使用します。

複雑にしないでおく ;-)

于 2010-05-20T12:26:50.480 に答える
1

MSDNによると、CreateFileBasedResourceManager はコンパイル済みのリソース ファイルを想定しています。通常、.resx ファイルは App_LocalResources に配置します。このディレクトリに resource.XXX.resources (XXX は現在のカルチャ ID) という名前のファイルがありますか。

ASP.NET プロジェクトでこれを確認するための便利な VS はありませんが、リソース文字列を処理する通常の方法は、プロジェクト プロパティの [リソース] タブに移動して、そこで文字列を作成することです。これにより、リソースの周りに厳密に型指定されたラッパーが生成され、独自の ResourceManager を明示的に作成する必要がなくなります。

于 2010-04-04T14:02:50.790 に答える