Microsoft.Web.Administration.ServerManager在IISExpress applicationHost.config中查找错误的目录

Dan*_*ell 11 iis iis-express

尝试在当前计算机上获取应用程序池时,我遇到了一个奇怪的问题.似乎在安装IISExpress时,除了完整的IIS之外,Microsoft代码还要检查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)
Run Code Online (Sandbox Code Playgroud)

Rod*_*ber 9

我强烈建议您停止使用IIS附带的Microsoft.Web.Administration本地引用(即使它在GAC中).这是因为它具有非常特定的版本号(即7.0.0.0),并且此版本可能会在未来版本的Windows中发生变化,这会受到影响.

相反,请检查nuget包:Microsoft.Web.Administration(https://www.nuget.org/packages/Microsoft.Web.Administration).这基本上使得您可以私有部署IIS依赖项.


Lar*_*ard 6

如果您在其中使用Microsoft.Web.Administration检查应用程序池的应用程序正在IISExpress上运行,则由于aspnet.config中的assemblydirect,它将始终回退到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>
Run Code Online (Sandbox Code Playgroud)

确保在完整IIS或Visual Studio开发服务器上运行该应用程序.

或者您可以尝试删除程序集重定向,但我没有尝试过,这可能会导致其他地方出现问题.我们必须假设IIS Express团队出于某种原因(除了方便之外)进行了重定向:-)


Mir*_*mvs 5

我已经知道答案已经过时,但您是否尝试过指定不同版本的dll?

一张图片值千言万语:

在此输入图像描述