WCF服务是否始终使用svc文件?

时间:2013-06-28 11:15:36

标签: wcf asmx

我正在将我的asmx Web服务转换为WCF。这本身是否意味着文件类型需要从.asmx更改为.svc?

1 个答案:

答案 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>