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

8

我完全不了解WCF和服务部署。我在设置我的服务在IIS 6.0上时遇到了麻烦。

我需要准确的步骤来将我的WCF服务部署在IIS 6.0上。

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

那么,我需要遵循哪些精确的步骤才能在IIS 6.0上部署我的WCF服务呢?


2
请查看:http://www.youtube.com/watch?v=mX8quq7MoeI - marc_s
2
或者在MSDN上查看:http://msdn.microsoft.com/zh-cn/library/ms733766.aspx - marc_s
1个回答

12
你基本上有两个选择,我认为:
选项1 - "bin"部署(首选)
1.将WCF服务编译为DLL(类库) 2.在IIS6中创建网站 3.将WCF DLL复制到网站的.\bin文件夹中 4.在该网站中创建一个*.svc文件 5.在网站文件夹中添加一个适当的web.config以定义您的端点和服务配置等
现在,您的WCF服务将可在网站的基本地址下访问,加上*.svc文件的名称,例如:
http://myserver/someweb/Myservice.svc

你的*.svc看起来应该像这样:

<%@ ServiceHost Language="C#" Debug="true" 
    Service="WCF_Simple_Service.HelloIndigoService"  %>

Service=属性表示实现服务的类,需要使用其完整的命名空间。

选项2 - 将内容放入App_Code

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

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

http://myserver/someweb/Myservice.svc

你的 *.svc 文件应该长成这个样子:
<%@ ServiceHost Language="C#" Debug="true" 
    Service="Service" 
    CodeBehind="~/App_Code/Service.cs" %>

一个简单的示例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>

您基本上需要定义<service>标签,再次强调:name=指定实现服务的类,需使用其完全限定名称。它必须至少包含一个终结点 - 由于IIS6仅支持HTTP,因此您可以使用basicHttpBindingwsHttpBinding,就是这么简单。 "mex"终结点是可选的,但非常有用,特别是用于开发和测试。它允许客户端“发现”服务并获取其服务描述,以便与之交互。

一旦您的服务在IIS中部署,您可以使用像WCF Test Client这样的工具来查看其运行情况,该工具随WCF免费提供,或者使用SoapUI,这是一个通用的SOAP测试工具(有免费版供您使用)。


我需要在第一个端点的地址标签中添加任何内容吗? - Willem
2
@Willem:通常不需要 - 在IIS中托管时,它是由IIS的虚拟目录控制地址。您可以添加类似MyService的内容 - 一个“相对”地址 - 然后您的服务将位于http://MyServer/VirtualDir/MyService.svc/MyService - 但由于那个*.svc文件已经在那里了,这些地址会变得有点笨重... - marc_s

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接