WCF (Windows Communication Foundation) 服务端配置主要包括配置文件(如 web.config 或 app.config)的设置和代码实现,以下是详细配置步骤和示例:

配置文件设置 (web.config / app.config)
在配置文件中定义服务、终结点、绑定和行为:
<configuration>
<system.serviceModel>
<!-- 服务配置 -->
<services>
<service name="MyNamespace.MyService" behaviorConfiguration="MyServiceBehavior">
<!-- 服务终结点 -->
<endpoint
address=""
binding="basicHttpBinding"
contract="MyNamespace.IMyService" />
<!-- 元数据交换终结点(用于生成客户端代理) -->
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
<!-- 基地址(IIS托管时可省略) -->
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733/MyService/" />
</baseAddresses>
</host>
</service>
</services>
<!-- 绑定配置(可选) -->
<bindings>
<basicHttpBinding>
<binding name="LargeMessageBinding"
maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647">
<readerQuotas maxArrayLength="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<!-- 行为配置 -->
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<!-- 允许通过HTTP获取元数据 -->
<serviceMetadata httpGetEnabled="true"/>
<!-- 调试时返回异常详情 -->
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
关键配置说明:
<service>:定义服务实现类(name="MyNamespace.MyService")。<endpoint>:address:终结点地址(空表示使用基地址)。binding:通信协议(如basicHttpBinding、wsHttpBinding、netTcpBinding)。contract:服务契约接口(IMyService)。
<behavior>:serviceMetadata:启用元数据发布(客户端生成代理需要)。serviceDebug:开发阶段开启异常详情。
服务代码实现
服务契约(接口):
[ServiceContract]
public interface IMyService
{
[OperationContract]
string GetData(int value);
}
服务实现类:
public class MyService : IMyService
{
public string GetData(int value)
{
return $"You entered: {value}";
}
}
服务托管方式
IIS 托管(推荐)
- 创建
.svc文件(如MyService.svc):<%@ ServiceHost Service="MyNamespace.MyService" CodeBehind="MyService.svc.cs" %> - 将配置写入
web.config。
自托管(控制台/WinForms)
在 Program.cs 中启动服务:

using (ServiceHost host = new ServiceHost(typeof(MyService)))
{
host.Open();
Console.WriteLine("Service running...");
Console.ReadLine();
host.Close();
}
高级配置场景
自定义绑定(如大文件传输)
<bindings>
<basicHttpBinding>
<binding name="LargeFileBinding"
maxReceivedMessageSize="2147483647"
transferMode="Streamed">
</binding>
</basicHttpBinding>
</bindings>
启用HTTPS
<endpoint
address=""
binding="wsHttpBinding"
bindingConfiguration="HttpsBinding"
contract="MyNamespace.IMyService" />
<bindings>
<wsHttpBinding>
<binding name="HttpsBinding">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</wsHttpBinding>
</bindings>
跨域支持(RESTful服务)
<endpoint
address=""
binding="webHttpBinding"
contract="MyNamespace.IMyService"
behaviorConfiguration="webBehavior" />
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
常见问题解决
- 元数据访问失败:确保已添加
mex终结点并启用serviceMetadata。 - 413请求过大:调整
maxReceivedMessageSize和readerQuotas。 - 跨协议调用:客户端绑定必须与服务端一致(如
basicHttpBinding)。 - 权限问题:自托管时以管理员权限运行,或使用
netsh添加URL保留:netsh http add urlacl url=http://+:8733/MyService/ user=Everyone
完整示例结构
项目目录/
│
├── MyService.svc # IIS入口文件
├── web.config # 配置文件
├── App_Code/
│ └── MyService.cs # 服务实现代码
│
└── bin/ # 编译输出
通过以上步骤,您的WCF服务即可正常运行,测试时可通过访问 http://localhost:端口/MyService.svc?wsdl 检查元数据是否发布成功。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/287405.html

