7

WebRole と WorkerRole によって呼び出されるメソッド (別のクラス ライブラリ内) があります。このメソッドには、次のように を使用して返されるファイルのパスが含まEnvironment.GetEnvironmentVariable("RoleRoot")れます。

private string FooPath()    
{
    string appRoot = Environment.GetEnvironmentVariable("RoleRoot");
    return Path.Combine(appRoot + @"\", @"approot\file.foo");
}

このメソッドを WorkerRole から呼び出すと、パスが正常に返されます。しかし、WebRole から呼び出すと、null.

何か案は?

編集: APNS-Sharp を使用して iOS にプッシュ メッセージを送信していますが、動作させるには .p12 証明書が必要です。現在、クラス ライブラリのルートに .p12 があります (WebRole と WorkerRole の両方から呼び出されます)。しかし要点はRoleRoot、WebRole から呼び出すと null が返されるのに、WorkerRole から呼び出すとパスが返されるのはなぜですか?

4

3 に答える 3

10

RoleRootWebRole は通常の Web サイトと同様に IIS を使用するため、WebRole に対して false を返します。そのため、WebRole から環境変数を取得するのは困難です。

binパスを適切に取得するには、次の代わりに、従来の Server.MapPath を使用してフォルダーを参照する必要がありましたapproot

private string FooPathWebRole()    
{
    string appRoot = HttpContext.Current.Server.MapPath(@"~\");
    return Path.Combine(appRoot + @"\", @"bin\file.foo");
}

WorkerRole については、何も変更されていません。

private string FooPathWorkerRole()    
{
    string appRoot = Environment.GetEnvironmentVariable("RoleRoot");
    return Path.Combine(appRoot + @"\", @"approot\file.foo");
}

さらに、Azure は p12 証明書をインポートしないことがわかりました。私はそれを別の形式に変換する必要がありますが、それは私にはうまくいかないと思います. したがって、最良のオプションは、アプリケーションのルートにそれらを配置し、そのBuild ActionContentにマークすることです。

于 2011-05-28T10:48:25.233 に答える
1

私はwebroleから試しましたが、うまくいきました。WaIISHost によって呼び出される Web ロールの OnStart() コードに配置します。

于 2011-12-16T23:42:44.153 に答える
0

証明書をロードする場合は、 http://blogs.msdn.com/b/jnak/archive/2010/01/29/installing-certificates-in-windows-azure-vms.aspxのアドバイスを試すことができます。

公開証明書をWindowsAzureにインポートするにはどうすればよいですか?

于 2011-05-25T22:12:27.433 に答える