WCF Web 服务未部署在 localhost ... web.config ... 端点上
Posted
技术标签:
【中文标题】WCF Web 服务未部署在 localhost ... web.config ... 端点上【英文标题】:WCF Web Service not deploying on localhost ... web.config ... endpoints 【发布时间】:2020-11-07 19:12:05 【问题描述】:尝试部署一个超级准系统 WCF Web 服务并在本地进行测试。我收到一个错误:
找不到与端点方案 https 匹配的基地址 与绑定 BasicHttpBinding。注册的基地址方案是 [http]。
我将在此处包含来自 web.config 文件的端点标签:
<services>
<service name="Company.PrototypeWebService.PrototypeWebService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="secureHTTPBinding" contract="Company.PrototypeWebService.ServiceContracts.IPrototypeWebService" />
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
</service>
</services>
这里有什么我遗漏的吗?我是 Web 服务开发的新手。
【问题讨论】:
地址属性为空,你觉得不奇怪? 我要从我的雇主那里得到一个模板,该模板似乎适用于类似的 Web 服务……但它确实看起来有点奇怪。 原来我应该使用 Visual Studio 发布工具...仍在弄清楚这一点。更多信息即将发布 我放弃了这个项目,重新开始。我认为问题在于我从 Visual Studio 中的错误模板开始,但我不能肯定地说。感谢您的信息 是的,您需要使用WCF服务应用程序模板在IIS中部署WCF项目。 【参考方案1】:这是因为你的基地址是Http,但是我看到你的元数据端点使用了https,这是错误的原因,修改你的Service:
<services>
<service name="Company.PrototypeWebService.PrototypeWebService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="secureHTTPBinding" contract="Company.PrototypeWebService.ServiceContracts.IPrototypeWebService" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
修改 mexHttpsBinding 为 mexHttpBinding。
如果要使用https绑定,需要在服务器上配置SSL证书。一般情况下,在 IIS 中使用 https 会更方便。
更新
如果托管在 IIS 中,我们需要创建以下 WCF 项目:
这个项目的目录是这样的:
我们可以直接将项目部署到IIS,在IIS中部署时设置基地址,我们不需要在配置文件中配置基地址。这是服务的基地址:
部署成功后,我们点击.svc文件查看服务:
【讨论】:
试过但没有帮助。我需要发布我的服务。见我上面的评论。谢谢你的想法 您是否在 IIS 中托管服务?如果不在 IIS 中托管,则需要在配置文件中提供基地址。 在 IIS 中注册时询问文件位置时我应该提供什么?我尝试了 bin 文件夹和 .sln 所在的文件夹。(如果重要的话,我使用的是 VS2017) 在 IIS 中托管 WCF 需要 .svc 文件。 .svc 文件包含服务接口的实现类。 IIS 中的 WCF 相当于一个 Web 服务。以上是关于WCF Web 服务未部署在 localhost ... web.config ... 端点上的主要内容,如果未能解决你的问题,请参考以下文章
当 url 段为 json 字符串时,访问 WCF Rest 服务 (WebGet) 时未找到 404