11

現在のマシンでアプリケーションプールを取得しようとすると、奇妙な問題が発生します。IISExpressがインストールされている場合、Microsoftコードは完全なIISに加えてIISExpressをチェックしたいと考えているようです。IISExpressは、ユーザーごとに個別のapplicationHostファイルを使用します。この呼び出しでこれらすべてをチェックする必要があるのか​​、それとも現在のユーザーのものだけをチェックする必要があるのか​​はわかりません。とにかく、「C:\ Windows \ system32 \ config \systemprofile\」ディレクトリで探しているものが見つかりません。このコードが実行されているアプリケーションプールが実行されているユーザーの場合は、%userprofile%または'C:\ Users \Administrator\'に移動する必要があります。

このsystemprofileディレクトリがどのように作成されているかを知っている人はいますか?

Exception:-
System.IO.DirectoryNotFoundException: Filename: \\?\C:\Windows\system32\config\systemprofile\Documents\IISExpress\config\applicationHost.config
Error: Cannot read configuration file


   at Microsoft.Web.Administration.Interop.AppHostWritableAdminManager.GetAdminSection(String bstrSectionName, String bstrSectionPath)
   at Microsoft.Web.Administration.Configuration.GetSectionInternal(ConfigurationSection section, String sectionPath, String locationPath)
   at Microsoft.Web.Administration.ServerManager.get_ApplicationPoolsSection()
   at Microsoft.Web.Administration.ServerManager.get_ApplicationPools()
   at CustomCode.Classes.IIsApplicationPool.GetApplicationPool(String iisWebSitePath, String poolName)
4

6 に答える 6

10

IISに付属しているMicrosoft.Web.Administrationへのローカル参照の使用を停止することを強くお勧めします(GACに含まれている場合でも)。これは、非常に特定のバージョン番号(7.0.0.0など)があり、このバージョンはWindowsの将来のバージョンで変更される可能性があり、問題が発生する可能性があるためです。

代わりに、nugetパッケージをチェックアウトしてください:Microsoft.Web.Administrationhttps://www.nuget.org/packages/Microsoft.Web.Administration)。これにより、基本的に、IISの依存関係をプライベートに展開できるようになります。

于 2015-03-20T19:33:08.863 に答える
6

Microsoft.Web.Administrationを使用してアプリプールを確認しているアプリケーションがIISExpressで実行されている場合、aspnet.configのassemblyredirectにより、常にMicrosoft.Web.Administrationバージョン7.9.0.0にフォールバックします。 IISエクスプレス。

構成の問題はC:\Program Files (x86)\IIS Express\config\templates\PersonalWebServer\aspnet.config 次のとおりです。

<dependentAssembly>
  <assemblyIdentity name="Microsoft.Web.Administration"
                    publicKeyToken="31bf3856ad364e35"
                    culture="neutral" />
  <bindingRedirect oldVersion="7.0.0.0"
                   newVersion="7.9.0.0" />
  <codeBase version="7.9.0.0" 
            href="FILE://%FalconBin%/Microsoft.Web.Administration.dll" />
</dependentAssembly>

フルIISまたはVisualStudio開発サーバーのいずれかでアプリケーションを実行していることを確認してください。

または、アセンブリリダイレクトを削除してみることもできますが、これは試していません。他の場所で問題が発生する可能性があります。IIS Expressチームが何らかの理由(利便性以外)でリダイレクトを行ったと想定する必要があります:-)

于 2012-07-19T10:00:35.073 に答える
5

答えが古いことはすでに知っていますが、別のバージョンのdllを指定してみましたか?

写真は千の言葉で価値があります:

ここに画像の説明を入力してください

于 2014-04-04T07:48:15.517 に答える
2

アプリケーションプールをどのように取得しようとしていますか?MWH(Microsoft.Web.Administration)APIを使用していますか?

  1. フルIISには、Microsoft.Web.Administration.dll(バージョン7.0.0.0)が付属しています。
  2. IIS Expressには、異なるバージョンのMicrosoft.Web.Administration.dll(バージョン7.9.0.0)が付属しています。

完全なIISがIISExpress固有のアセンブリを使用しようとしているようです。どのようにしてこの状態になったのかはわかりませんが、IIS Expressをアンインストールして、この問題が引き続き発生するかどうかを確認できます。

編集:

WebアプリケーションでMicrosoft.Web.Administration(MWA)バー​​ジョン7.9.0.0を使用するのはなぜですか?IIS Express 7.5に同梱されており、ユーザーごとのapplicationhost.configファイルでのみ機能します。これは、\ windows \ system32 \ inetsrv \ config\appliationhost.configにある受信トレイ/完全なIIS構成ファイルを使用/操作しません。

あなたの場合、完全なIISで実行されているWebアプリケーションはシステムIDで実行されているため、MWA7.9.0.0は'C:\ Windows \ system32 \ config\systemprofile'ディレクトリから構成ファイルを読み込もうとしています。

于 2012-06-26T21:37:02.877 に答える
1

私は最近この問題に遭遇しました。かなりの数の投稿を読んだ後、これは私に何が起こっているのかについてのアイデアを与えるのに最も近いものでした。VS IDE内で実行しているときに、2つのバージョン(7.0.0.0と7.9.0.0)の間の競合に対する解決策は必ずしもありませんが、数時間苦労した後、私はあなたができる奇妙なトリックを見つけましたIDEの自動リダイレクトを回避します。

次の例では:

inetsrvディレクトリからMicrosoft.Web.Administration.dll(7.0.0.0)を参照するアプリケーションを開発し、次のいずれかを実行して接続を試み、IISExpressではなく実際のIISのアプリケーションプール定義にアクセスします。インストールされています。コンパイルされたコードをIDEの外部で実行すると、指定方法に関係なく常に正しく機能します。

  • ServerManager sm = new ServerManager();
  • sm.OpenRemote( "localhost");
  • sm.OpenRemote( "MYPC"); //ローカルマシンの名前がMYPCであると仮定します

これらはすべて、VSが7.0.0.0 DLLから7.9.0.0に参照をリダイレクトするようにトリガーします。これにより、誤ったサイトまたはCOM例外の取得が発生します。

私が見つけた癖は、ローカルIISを開いて、「localhost」または「MYPC」を「LocalHost」または「MyPc」として指定しようとしても、常にOpenRemote()を使用することでした。 「localhost」(すべて小文字)またはローカルマシン名と大文字と小文字が完全に一致するわけではありません。

この癖は、すべてのVSバージョンに固有ではない場合があります。現在、VS Professional 2017(15.9.11)を使用しています。

私が述べたように、それはリダイレクトを修正しますが、デバッグ中には間違いなく役立ちます。

于 2019-04-26T17:23:49.923 に答える
0

「TeamConfigフォルダー」を開発マシンにローカルにマッピングすることで、この問題を解決できることがわかりました。

于 2018-02-28T04:43:30.027 に答える