如何在IIS 6.0上部署我的WCF服务?

Wil*_*lem 8 iis wcf web-services

我是新手WCF和部署服务.我在IIS 6.0上设置服务时遇到问题.

我需要WCF在IIS 6.0上部署我的服务的确切步骤.

注意:我创建了一个WCF服务应用程序......

那么,在IIS 6.0上部署我的wcf服务需要遵循的具体步骤是什么?

mar*_*c_s 12

我相信你基本上有两种选择:

选项1 - "bin"部署(首选选项)

  1. 将您的WCF服务编译为DLL(类库)
  2. 在IIS6中创建一个网站
  3. 将WCF DLL复制到网站的.\bin文件夹中
  4. *.svc在该网站中创建一个文件
  5. web.config在网站文件夹中添加适当的内容以定义您的端点和服务配置等.

您现在可以通过网站的基地址以及*.svc文件名称访问您的WCF服务,例如

http://myserver/someweb/Myservice.svc
Run Code Online (Sandbox Code Playgroud)

*.svc会看起来像这样:

<%@ ServiceHost Language="C#" Debug="true" 
    Service="WCF_Simple_Service.HelloIndigoService"  %>
Run Code Online (Sandbox Code Playgroud)

Service=属性是指实现服务的类-其命名空间完全合格.

选项2 - 把东西放进去 App_Code

  1. 在IIS6中创建一个网站
  2. 将所有与WCF相关的*.cs文件直接放入.\App_Code文件夹中
  3. *.svc在该网站中创建一个文件
  4. web.config在网站文件夹中添加适当的内容以定义您的端点和服务配置等.

您现在可以通过网站的基地址以及*.svc文件名称访问您的WCF服务,例如

http://myserver/someweb/Myservice.svc
Run Code Online (Sandbox Code Playgroud)

*.svc会看起来像这样:

<%@ ServiceHost Language="C#" Debug="true" 
    Service="Service" 
    CodeBehind="~/App_Code/Service.cs" %>
Run Code Online (Sandbox Code Playgroud)

一个简单的示例web.config可能看起来像这样:

<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior name="WithDebug">
                <serviceMetadata httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  <services>
    <service name="SimpleWCF.HelloIndigoService" behaviorConfiguration="true">
      <endpoint
          address=""
          binding="basicHttpBinding"
          contract="SimpleWCF.IHelloIndigoService" />
      <endpoint
          address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange" />
    </service>
  </services>
</system.serviceModel>
Run Code Online (Sandbox Code Playgroud)

您基本上定义了您的<service>标记 - 并且再次:name=表示实现服务的类 - 完全限定其命名空间.它必须包含至少一个端点 - 因为IIS6仅支持HTTP,您可以使用basicHttpBinding或者wsHttpBinding那就是所有端点."mex"端点是可选的 - 但非常有用,尤其适用于开发和测试.它允许客户端"发现"服务并获取其服务描述,以便它可以与之交互.

一旦您的服务部署在IIS中,您就可以使用WCF下免费提供的WCF测试客户端等工具或SoapUI(一种通用的SOAP测试实用程序(可免费使用))来查看它的运行情况.

  • @Willem:通常没有 - 在IIS中托管时,它是控制地址的IIS的虚拟目录.您可以向它添加类似"MyService"的内容 - "相对"地址 - 然后您的服务将位于`http:// MyServer/VirtualDir/MyService.svc/MyService` - 但是因为`*.svc`文件位于无论如何,那些地址变得有点笨重...... (2认同)