3

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

4

1 回答 1

10

每个 WCF 服务都需要有一个宿主进程:Windows 服务、IIS 或任何其他 .NET 程序。该主机将创建 System.ServiceModel.ServiceHost(或任何自定义 System.ServiceModel.ServiceHostBase)的实例,并将管理服务配置、行为、通道。

但是,当服务托管在 IIS 中时,它的行为会有所不同。默认情况下,我们需要创建一个扩展名为 .svc 的物理文件。这是一个纯粹的 IIS 要求。IIS 中有一个处理 .svc 文件类型的模块。该文件只是服务类型和可选服务主机工厂类型的声明。

<%@ 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>
于 2013-06-28T12:01:29.377 回答