IIS部署WCF详细教程

Posted 追逐时光者

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IIS部署WCF详细教程相关的知识,希望对你有一定的参考价值。

前言:

  前段时间接手了公司一个十几年前的老项目,该项目对外提供的服务使用的是WCF进行通信的。因为需要其他项目需要频繁的使用该WCF服务,所以我决定把这个WCF部署到IIS中避免每次调试运行查看效果。

安装并配置本地IIS:

Windows10 IIS Web服务器安装配置

添加WCF网站

 

开启目录浏览

 

 

访问.svc文件,提示HTTP 错误 404.3 - Not Found

由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。

IIS 配置.svc的MIME映射

首先添加MIME类型

扩展名:svc

MIME类型:application/octet-stream

 

 

 

添加.svc管理处理程序:

请求路径: *.svc
类型: System.ServiceModel.Activation.HttpHandler
名称: svc-Integrated

点击.svc文件查看WCF运行效果

 

参考文章

IIS 配置.svc的MIME映射

 

作者:追逐时光者

作者简介:一个热爱编程,善于分享,喜欢学习、探索、尝试新事物,新技术的程序猿。

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果觉得时光这篇文章有帮助的话,可以点一下右下角的【♥推荐♥】,希望能够持续的为大家带来好的技术文章,文中可能存在描述不正确或错误的地方,欢迎指正、补充,不胜感激 !

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

【中文标题】如何在 IIS 6.0 上部署我的 WCF 服务?【英文标题】:How to deploy my WCF service on IIS 6.0? 【发布时间】:2012-02-27 06:10:49 【问题描述】:

我对@9​​87654323@ 和服务部署完全陌生。我在 IIS 6.0 上设置服务时遇到问题。

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

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

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

【问题讨论】:

见:youtube.com/watch?v=mX8quq7MoeI 或 MSDN 这里:msdn.microsoft.com/en-us/library/ms733766.aspx 【参考方案1】:

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

选项 1 - “bin”部署(首选选项)

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

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

http://myserver/someweb/Myservice.svc

您的*.svc 看起来像这样:

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

Service= 属性表示实现服务的类 - 完全符合其命名空间。

选项 2 - 将内容放入 App_Code

    在 IIS6 中创建网站 将所有与 WCF 相关的 *.cs 文件直接放入 .\App_Code 文件夹中 在该网站中创建一个*.svc 文件 在网站文件夹中添加适当的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>

您基本上定义了您的&lt;service&gt; 标记-再次:name= 表示实现服务的类-完全限定其名称空间。它必须至少包含一个端点——因为 IIS6 只支持 HTTP,所以您可以使用 basicHttpBindingwsHttpBinding,这就是全部。 “mex”端点是可选的 - 但非常有用,特别是对于开发和测试。它允许客户端“发现”服务并获取其服务描述,以便与​​它进行交互。

在 IIS 中部署您的服务后,您可以使用 WCF 随附的免费工具 WCF Test Client 或通用 SOAP 测试实用程序 SoapUI(免费版)等工具查看它的运行情况供您使用)。

【讨论】:

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

以上是关于IIS部署WCF详细教程的主要内容,如果未能解决你的问题,请参考以下文章

在vmware虚拟机下的Window2003服务器下安装IIS服务详细教程——超级详细(解决关于:800a0bb9的解决办法)

ubuntu部署django详细教程

前端项目自动化部署——超详细教程(JenkinsGithub Actions)

超详细部署Kafka教程

Web服务器的配置(详细图文教程)

Jenkins详细安装与构建部署使用教程