如何将 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 System
到 C:\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 -ir
和 ServiceModelReg.exe -ia
命令:
对于我打开的 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?