55

Environment.GetEnvironmentVariable("variableName")IIS でホストされている webMethod 内から呼び出しが行われた場合、変数の値を取得できず、同じマシン上のコンソール アプリケーションから呼び出すと機能するのはなぜですか?

これらの変数を IIS Web サービスから見えるようにするには、どこで設定すればよいですか? それを取得するには、からの 2 番目のパラメーターを使用する必要がEnvironment.GetEnvironmentVariable(name, target)ありますか?

それは実際には本当に簡単です:

[WebMethod(Description = "Gets the environment variable value.")]
public string GetEnvironmentVariable()
{
    return Environment.GetEnvironmentVariable("VARIABLE_NAME_HERE");
}

ところで、VARIABLE_NAME_HERE はシステムおよびユーザー レベルで設定されます。

4

6 に答える 6

27

詳細については、ここを参照してください。

.NET アプリケーションでのシステム全体の環境変数の使用


具体的には:

システム環境変数とは

環境変数は、システム内の環境全体に関する情報を保存する文字列です。これらの文字列値は動的であり、システムの動作に影響を与える可能性があります。環境変数は、主に次の 2 つのタイプに分類できます。

システム変数: 現在のユーザーが何であれ、システム全体に影響を与えます。それらは Windows によって定義され、レジストリに保存されます。それらを変更できるようにするには、管理者である必要があります。これらの変更を有効にするには、通常、コンピューターを再起動する必要があります。

ユーザー変数: 現在のシステム ユーザーの現在の環境に影響を与えます。これらは、どのシステム ユーザーでも削除、変更、および追加できます。これらは、Windows セットアップ、一部のプログラム、およびユーザーによって使用されます。これらの変数への変更はレジストリに保存され、すぐに有効になります。


マシンに存在しない環境変数にアクセスしようとすると、問題が発生します。Web サービスのホスト マシンではなく、ローカル マシンに存在する変数を見つけようとしているに違いありません。

于 2012-10-05T22:38:10.903 に答える
15

コマンドを使用して IIS を再起動する必要がありますiisreset

于 2014-01-24T08:55:56.207 に答える