如何将 WCF 服务发布到 IIS?

Posted

技术标签:

【中文标题】如何将 WCF 服务发布到 IIS?【英文标题】:how do I publish a WCF service to IIS? 【发布时间】:2021-10-24 01:45:19 【问题描述】:

此时,当我从 Visual Studio 运行它时,我有一个使用 Cassini/IIS Express 和 .NET 客户端的 WCF 服务,但是当我尝试将它直接发布到 IIS 时遇到了困难。由于某种原因,我无法连接到 WCF 服务。我一直在通过查看这些 Microsoft 在线文档来研究如何发布:

https://docs.microsoft.com/en-us/dotnet/framework/wcf/wcf-service-publishing

现在我只是尝试在本地发布它,我选择将它发布到 File SystemC:\inetpub\wwwroot\GeoService 但是当我尝试浏览到服务器时,我只会收到如下错误:

顺便说一句,我曾尝试浏览这些网站:

http://localhost/GeoService.svc

http://localhost/GeoService/

http://localhost/GeoService/GeoService.svc

我得到的错误如下:

HTTP Error 404.0 - Not Found

HTTP Error 403.14 - Forbidden

请注意,完整的源代码在这里:

https://github.com/john1726/WcfEndToEnd.git

我错过了什么?有没有人有什么建议? TIA。

【问题讨论】:

WCF 在 Windows 上默认是不启用的,所以你需要一些额外的步骤(对于 Windows Server 版本你可以参考help.genesys.com/pureconnect/mergedprojects/wh_tr/…) 【参考方案1】:

请注意,我尝试执行 Microsoft 在线文档中的步骤,但我最终不得不通过转到 Programs and Features 来更新服务器 -> 打开 Windows Features on or off 并选择 .NET Framework 4.8 Advanced Services 我启用了所有选项,因为不再支持 aspnet_regiis.exe -irServiceModelReg.exe -ia 命令:

ASP.NET 4.8 WCF 服务

对于我打开的 WCF 服务:

HTTP Activation
MSMQ Activation
Named Pipe Activation 
TCP Activation
TCP Port Sharing

我也打开了Windows Process Activation Service

.NET Environment

此外,我必须通过转到 IIS Manager 并导航到 MyServer -> Sites -> My Site 并单击 Directory Browsing 并选择 Enable 来打开 Directory Browsing

我做的另一个步骤是通过打开或关闭功能启用 IIS 6 元数据库我去了Internet Information Services -> Web Management Tools -> IIS Metabase and IIS 6 configuration compatibility

见Error - Unable to access the IIS metabase

因此我最终使用的 URL 是:

http://localhost/GeoService/GeoService.svc

【讨论】:

以上是关于如何将 WCF 服务发布到 IIS?的主要内容,如果未能解决你的问题,请参考以下文章

在 IIS 中托管 WCF 服务时如何避免 CommunicationObjectFaultedException?

使用 IIS 将 WCF 服务从一台服务器路由到另一台服务器

WCF发布到IIS 7.0,并以https访问

基于 IIS 绑定将 WCF 端点动态绑定到 HTTPS

使用IIS发布WCF服务

如何解决 C# IIS 托管的 WCF NET TCP 服务超时问题