我正在将我的asmx Web服务转换为WCF。这本身是否意味着文件类型需要从.asmx更改为.svc?
答案 0 :(得分:7)
每个WCF服务都需要有一个主机进程:Windows服务,IIS或任何其他.NET程序。此主机将创建System.ServiceModel.ServiceHost(或任何自定义System.ServiceModel.ServiceHostBase)的实例,并将管理服务配置,行为和通道。
但是,当在IIS中托管服务时,它的行为略有不同。默认情况下,我们需要创建一个扩展名为.svc的物理文件。这是一个纯粹的IIS要求。 IIS中有一个处理.svc文件类型的模块。此文件只是服务类型和optionnaly服务主机工厂类型的声明。
<%@ ServiceHost Language="C#" Debug="true" Factory="System.ServiceModel.Activation.ServiceHostFactory" Service="MyFamousCalculatorService" CodeBehind="MyFamousCalculatorService.svc.cs" %>
从WCF 4.0开始,我们可以在没有物理.svc文件的情况下在IIS中创建和部署服务。这可以使用serviceActivations
配置部分中的system.serviceModel
配置来完成。
<configuration>
<system.serviceModel>
<serviceHostingEnvironment>
<serviceActivations>
<add relativeAddress="MyFamousCalculatorService.svc" service="MyFamousCalculatorService"/>
</serviceActivations>
</serviceHostingEnvironment>
</system.serviceModel>
</configuration>