0

0

WCF Web.config配置详解 .NET WCF服务XML配置指南

煙雲

煙雲

发布时间:2026-02-20 07:29:35

|

525人浏览过

|

来源于php中文网

原创

wcf web.config 的 必须手动写全,缺任一子节(如 、)都会导致服务启动失败,错误提示模糊;contract 必须为完整命名空间类型名,address 为空时需配置

wcf web.config配置详解 .net wcf服务xml配置指南

WCF web.config 中的 <system.servicemodel></system.servicemodel> 必须手动写全

WCF 不会自动补全或推断服务模型配置,哪怕只缺一个子节(比如漏掉 <behaviors></behaviors><bindings></bindings>),服务就起不来,且错误提示常指向 ServiceHost 初始化失败,而非具体哪行 XML 错了。

  • 常见错误现象:The service 'xxx' could not be activatedConfiguration binding extension not found,实际只是 <extensions></extensions> 没注册或 <bindingextensions></bindingextensions> 缺失
  • 使用场景:自定义绑定(如 netTcpBinding)、启用元数据交换(mexHttpBinding)、加行为(serviceMetadataserviceDebug)都依赖该节显式声明
  • 参数差异:<basichttpbinding></basichttpbinding> 默认兼容老客户端,但不支持事务;<wshttpbinding></wshttpbinding> 默认启用安全和可靠会话,若没配证书或没开 HTTPS,直接报 500 错误
  • 示例中易错点:<endpoint address="" binding="wsHttpBinding" contract="IMyService"></endpoint>address 为空时,必须确保 <host><baseaddresses></baseaddresses></host> 已设,否则地址解析失败

endpointcontract 必须是完整类型名,且程序集已加载

contract="MyService" 而不是 contract="MyNamespace.IMyService" 是最常导致“找不到契约”的原因——WCF 不做命名空间推导,也不查 using。

Bg Eraser
Bg Eraser

图片物体抹除和清理

下载
  • 常见错误现象:Contract name 'xxx' does not match with the provided contract name,尤其在 IIS 托管时,可能因程序集未被 <compilation></compilation> 引入而静默失败
  • 使用场景:接口定义在单独类库时,contract 值必须带命名空间;若实现类与接口同名(如 MyService 实现 IMyService),别误填成实现类名
  • 性能影响:每次请求都会反射匹配 contract 字符串到类型,拼错或大小写不对(如 imyservice)会导致 TypeLoadException,比运行时异常更早抛出
  • 检查方法:用 typeof(IMyService).AssemblyQualifiedName 输出真实字符串,直接粘贴进 contract 属性

IIS 托管下 <servicehostingenvironment></servicehostingenvironment>multipleSiteBindingsEnabled 很关键

默认值是 false,意味着一个 <service></service> 只能响应一个绑定(比如只认 HTTP,不认 HTTPS),哪怕你配了两个 <endpoint></endpoint>

  • 常见错误现象:HTTPS 端点始终 404,HTTP 正常;或启用 mexHttpsBinding 后元数据地址返回 404
  • 使用场景:生产环境通常需同时暴露 HTTP(内网调用)和 HTTPS(外网),此时必须设 multipleSiteBindingsEnabled="true"
  • 兼容性注意:.NET Framework 4.0+ 支持该属性,旧版本只能靠 <service></service> 拆分成多个,或改用自托管
  • 顺带一提:aspNetCompatibilityEnabled="true" 若开启,要求服务类加 [AspNetCompatibilityRequirements] 特性,否则启动即崩

web.config<system.webserver></system.webserver>handlersmodules 不能少

IIS 7+ 默认用集成管道,WCF 的 .svc 文件要靠 ServiceModel-4.0 handler 处理,漏配就会返回源码或 404。

  • 常见错误现象:访问 http://host/MyService.svc 直接下载 .svc 文件,或提示 Handler "svc-Integrated-4.0" has a bad module "ManagedPipelineHandler"
  • 使用场景:IIS 托管必加,尤其部署到 Server 2012+ 或 Windows 10 IIS 10 时,<handlers></handlers> 里必须有 svc-Integrated-4.0(Framework 4.0+)或 svc-Integrated(3.5)
  • 容易被忽略的点:<modules runallmanagedmodulesforallrequests="true"></modules> 不是可选——它让所有请求(包括静态资源)过 .NET 管道,否则 mex 元数据请求可能被静态文件模块截胡
  • 验证方式:在 IIS 管理器 → 站点 → “处理程序映射”,确认 *.svc 绑定到了 ServiceModel 对应版本
事情说清了就结束。WCF 配置真正麻烦的从来不是语法,而是每个节点都强耦合、缺一不可,而且错误反馈往往隔了一层才冒出来。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1929

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2104

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

1129

2024.11.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

594

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

217

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1555

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

640

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

965

2024.03.22

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

660

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
C# 教程
C# 教程

共94课时 | 9.8万人学习

python编程入门系列图文教程
python编程入门系列图文教程

共65课时 | 24.9万人学习

vscode其实很简单
vscode其实很简单

共72课时 | 29.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号