ASP.NET Webアプリケーションで実行されているOracleクライアントに問題があります。いくつかのチェックの後、私は問題がEnvironment.GetEnvironmentVariable("Path")
が間違った値を返すという事実であることが分かった。Environment.GetEnvironmentVariable( "Path")がASP.NETで異なる値を返します
コンソールアプリケーションでメソッドを呼び出すと、正しい値が返されます。ASP.NET WebAppで呼び出すと、別の(間違った)値が返され、システムプロパティまたはWindowsレジストリ。
私のASP.NETアプリケーションはローカルIISで実行されており、AppPoolのIDはユーザー(コンソールアプリケーションを実行するユーザー)に設定されています。私はGetEnvironmentVariable
のソースコードを見てみましたが、それは基本的
System.Security.Principal.WindowsIdentity.GetCurrent().Name
Environment.UserName
:私は2つのアプリケーション上で次のプロパティをチェックし、値が同じであることを確認する Win32メソッドGetEnvironmentVariable
(このソースコードは「明らかに利用できません」)への呼び出しをラップします。
私には何が欠けていますか?
おかげ
更新
いくつかチェックした後、私はコンソールアプリケーションで取得しても値が、私はそこに見つけたものによって異なっていることに気づい:
だから何ですGetEnvironmentVariableの "source"?
アップデート2
Microsoft saysプロセスの環境変数は親プロセスからロードされているので、私はw3wp.exeのプロセス階層をチェックしていること。 > SERVICES.EXE - - >にsvchost.exe - SYSTEMとして実行> w3wp.exeの
wininit、サービスとのsvchost
WININIT.EXE:それは次のようです。
wininitとservicesパス環境変数には、システムプロパティ(「システム環境変数」)に記載されている値が含まれています。 svchostは別の値を持っているので、コンソールアプリケーションで取得した値とASP.NET Web Appで取得した値の差の原因は(おそらく)svchostがこの値を編集するという事実です。
を実行することができます。"環境は環境であり、おそらくあなたが予測しているもの以外のユーザー/プロセスコンテキストのために環境を返すでしょう。なぜあなたはそれが「間違っている」と思うのかを広げることができますか? –
@DavidW「間違った」I (システムのプロパティから)設定された値によって異なることを意味しますが、最新のアップデート後には、コンソールアプリケーションで取得された値さえもこれらの値によって異なるようです。 –