You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将HttpsGetEnabled设为false后无法添加或更新WCF服务引用

在禁用httpGetEnabled和httpsGetEnabled时添加WCF服务引用的方法

当关闭httpGetEnabled和httpsGetEnabled后,常规通过HTTP/HTTPS GET方式获取元数据的途径被切断,此时需要通过MEX(元数据交换)端点来获取服务元数据,以下是具体实现步骤:

1. 配置服务端MEX端点

在服务端的web.config或app.config中,为服务添加专门的MEX元数据交换端点,绑定需与服务的安全模式匹配(此处为HTTPS,使用basicHttpsBinding):

<services>
  <!-- 替换为你的服务类全命名空间 -->
  <service name="YourServiceNamespace.MyService">
    <!-- 原有业务服务端点 -->
    <endpoint address="" 
              binding="basicHttpsBinding" 
              contract="YourServiceNamespace.IMyService"/>
    <!-- MEX元数据端点 -->
    <endpoint address="mex" 
              binding="basicHttpsBinding" 
              contract="IMetadataExchange"/>
  </service>
</services>

注意事项:

  • service name必须与服务实现类的全命名空间+类名完全一致
  • contract为IMetadataExchange是固定值,用于标识这是元数据交换端点

2. 通过MEX端点添加服务引用

在Visual Studio的「添加服务引用」对话框中,输入MEX端点的完整URL:

https://localhost:44390/MyService.svc/mex

点击「转到」即可正常获取元数据并生成客户端代理。

3. 备选方案:使用SvcUtil工具生成代理

如果不想在开发环境持续开启MEX端点,可使用Visual Studio自带的SvcUtil.exe工具离线生成代理类:

  1. 打开「Developer Command Prompt for Visual Studio」
  2. 执行以下命令(替换为你的实际MEX地址):
    svcutil.exe https://localhost:44390/MyService.svc/mex /out:MyServiceProxy.cs /config:ClientConfig.config
    
  3. 将生成的MyServiceProxy.cs添加到客户端项目,将ClientConfig.config中的配置合并到客户端的web.config或app.config中。

错误原因说明

你遇到的415错误是因为客户端尝试用SOAP 1.2的内容类型(application/soap+xml)请求,但basicHttpsBinding默认使用SOAP 1.1(text/xml),但核心问题是元数据获取被禁用,启用MEX端点后即可同时解决元数据获取和绑定匹配问题。

内容的提问来源于stack exchange,提问作者Asif Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 07:05:29