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

tus*_*eau 2 wcf asmx

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

Cyb*_*axs 8

每个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" %>
Run Code Online (Sandbox Code Playgroud)

从WCF 4.0开始,我们可以在没有物理.svc文件的情况下在IIS中创建和部署服务.这可以使用配置部分serviceActivations中的system.serviceModel配置来完成.

<configuration>
  <system.serviceModel>
    <serviceHostingEnvironment>
      <serviceActivations>
        <add relativeAddress="MyFamousCalculatorService.svc" service="MyFamousCalculatorService"/>
      </serviceActivations>
    </serviceHostingEnvironment>
  </system.serviceModel>
</configuration>
Run Code Online (Sandbox Code Playgroud)