无法使用 c# 以编程方式访问 iis 远程服务器

Posted

技术标签:

【中文标题】无法使用 c# 以编程方式访问 iis 远程服务器【英文标题】:Can't access to iis remote server programatically with c# 【发布时间】:2019-08-23 10:18:41 【问题描述】:

我需要访问远程机器上的远程 iis,当我尝试访问它时,它实际上工作正常,在浏览器中为我的本地机器提供 ip+port,iis 似乎工作正常,我可以控制它iis 管理器界面。

iis remotely access from my local machine

Ican access to the distant web site

我的问题是当我需要使用此代码时(我已经对其进行了测试,它可以完美地作为本地主机运行)我的代码向我抛出了这个异常:

System.UnauthorizedAccessException: 'Retrieving the COM class factory for remote component with CLSID 2B72133B-3F5B-4602-8952-803546CE3344 from machine RD01 failed due to the following error: 80070005 RD01.'

当我尝试调试 ServerManager 返回的内容时,它会告诉我:

'serverManager.ApplicationDefaults' threw an exception of type 'System.UnauthorizedAccessException'

注意:我已经尝试过以下链接中提到的解决方案,但它不起作用

Credentials for ServerManager.OpenRemote

更新

我忘了提到我使用的是 Microsoft.Web.Administration.dll v 7.0.0 我的应用程序是带有 WPF 的桌面应用程序

【问题讨论】:

该远程 API 是为 Intranet 设计的,需要打开和访问 DCOM 端口。请使用新的 IIS REST API,因为它涵盖了更多的场景并且使用更简单。 【参考方案1】:

尝试按照以下步骤操作:

1) 从您的计算机打开搜索并输入 DCOMCNFG。

2)在组件服务窗口中右键单击我的电脑并选择属性。 选择 COM 证券选项卡。

2)在访问权限中,单击编辑默认值并将网络服务添加到其中并授予它允许本地访问权限。对 \Users 或 iis_iusrs, iusr 执行相同操作。

3) 在 Launch and Activation Permissions 中,单击 Edit Defaults 并为其添加 Network Service 并为其授予 Local Launch 和 Local Activation 权限。对 \Users ,iis_iusrs, iusr 执行相同操作。

【讨论】:

我做了所有这些,但我仍然遇到同样的异常 尝试将 HKEY_CLASSES_ROOT\AppID\WINWORD.EXE 下的 AppID 注册表项从旧条目更改为 00020906-0000-0000-C000-000000000046。有关详细信息,请参阅此链接。 不幸的是,这仍然无法正常工作,在调试时我在这一行出现错误: var serverManager = ServerManager.OpenRemote("RD01");是否有任何特定权限授予视觉工作室? (我已经以管理员身份运行过) 您在更改注册表后是否重新启动了机器?

以上是关于无法使用 c# 以编程方式访问 iis 远程服务器的主要内容,如果未能解决你的问题,请参考以下文章

如何从 .NET 类中以编程方式访问服务器级 IIS 连接设置?

使用 C# 以编程方式在 IIS 中创建网站并设置端口号

以编程方式更改IIS网站的SSL设置

C#中FTP编程 远程服务器返回错误: (550) 文件不可用(例如,未找到文件,无法访问文件)

如何以编程方式连接到需要 SSH 隧道的远程数据库服务器?

尝试使用集成安全性设置 IIS7 以进行远程 sql 服务器访问