Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用IIS GetWebConfiguration获取.NET Cores配置?_C#_Iis_.net Core_Web Administration - Fatal编程技术网

C# 如何使用IIS GetWebConfiguration获取.NET Cores配置?

C# 如何使用IIS GetWebConfiguration获取.NET Cores配置?,c#,iis,.net-core,web-administration,C#,Iis,.net Core,Web Administration,我正在创建一个.NET Core 2.1 Web API项目(具有Angular 7前端),其中我使用Microsoft.Web.Administration API从远程IIS Web服务器(主要列出网站、应用程序、应用程序池等)提取信息: 请注意,下面是我如何实例化远程IIS服务器对象,即ServerManager对象: 要创建ServerManager对象(可以说是IIS“container”对象),我使用一个隐藏构造函数,将远程IIS服务器的applicationHost.config

我正在创建一个.NET Core 2.1 Web API项目(具有Angular 7前端),其中我使用Microsoft.Web.Administration API从远程IIS Web服务器(主要列出网站、应用程序、应用程序池等)提取信息:

请注意,下面是我如何实例化远程IIS服务器对象,即
ServerManager
对象:

要创建
ServerManager
对象(可以说是IIS“container”对象),我使用一个隐藏构造函数,将远程IIS服务器的
applicationHost.config
文件路径传递给它(位于
C:\Windows\System32\inetsrv\config
——默认位置)。我这样做是因为当我使用
ServerManager.OpenRemote(stringserver\u ip)
方法时,会收到与COM相关的问题

无论如何,每当我试图使用ServerManager、站点和应用程序的
GetWebConfiguration
方法来获取每个IIS对象的
Web.config
文件时,前面提到的每个对象的
GetWebConfig
方法都会失败。当我运行代码时,应用程序不会崩溃,但在调试器中检查对象时,出现以下错误:

my_siteWebConfig.RootSectionGroup = 'my_siteWebConfig.RootSectionGroup' threw an exception of type 'System.IO.DirectoryNotFoundException'
看起来
GetWebConfiguration
代码正在不存在的目录中查找站点/应用程序的
web.config
文件。调试器显示
ConfigurationPathToEdit
等于
“MACHINE/WEBROOT/APPHOST/my_site”
。它正在查找
applicationHost.Config
文件所在的目录(全局IIS设置文件位置)。但是,我的网站和应用程序的
web.config
文件存储在
D:\drive
D:\MyCompany
下。是否有方法让
GetWebConfiguration
方法查看配置文件的默认
applicationHost.Config
目录以外的目录


抱歉,如果这有点混乱。谢谢你的帮助,如果有什么不清楚的请告诉我。谢谢。

您可以查看此链接:
https://docs.microsoft.com/en-us/dotnet/api/microsoft.web.administration.servermanager.getwebconfiguration?view=iis-dotnet
似乎您只需要提供web应用程序名称:
ServerManager.GetWebConfiguration(“web应用程序名称”)
在这些IIS计算机上安装IIS管理API,以便您可以调用REST API
Microsoft.Web。管理通常不是为.NET Core设计的。@kristech这正是我正在做的-我在ServerManager对象上向GetWebConfiguration方法提供“应用程序名”或“站点名”,但我收到“System.IO.DirectoryNotFoundException”,这是因为它正在该目录中查找web.config:MACHINE/WEBROOT/APPHOST/SITE,但我的web.config实际上位于我的D驱动器下的一个文件夹中。但是代码会显式地检查MACHINE/WEBROOT目录,我不知道为什么。@LexLi我一直在浏览IIS管理API的源代码。我在做类似的事情,除了远程。我试图避免在20多台服务器上安装API/微服务……你可能无法“远程”安装,因为微软的代码没有指出可行性。