使用netTcp绑定的WCF服务寄宿到IIS7

本文转载:http://www.cnblogs.com/wengyuli/archive/2010/11/22/wcf-tcp-host-to-iis.html

摘要

在项目开发中,我们可能会适时的选择http或者tcp绑定的wcf服务,可以使用控制台来托管服务,也可以使用IIS来承载服务,由于IIS本身对于请求和异常的处理能力,使得我们可以省去很多开发精力而成为托管服务的首选,之前我做的WCF服务时托管在控制台的,今天摸索了一下采用tcp绑定的wcf托管到IIS7的过程,分享一下,希望能帮助到想移植服务到IIS的朋友。

实例

依然是以一个服务作为例子展开,我们新建一个WCF Application,默认有一个简单的服务Service1.svc, 

ExpandedBlockStart.gif 代码
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData( int value);
}
public class Service1 : IService1
{
public string GetData( int value)
{
return string .Format( " You entered: {0} " , value);
}
}
web.config的配置非常简单,自动生成不作介绍。

开始移植

接下来我们需要将这个普通的服务移植Host到IIS上,

第一.首先需要更改web.config文件,将服务配置为net.tcp绑定

配置文件如下:

 
ExpandedBlockStart.gif 代码
< system.serviceModel >
< bindings >
< netTcpBinding >
< security mode ="None" >
< transport clientCredentialType ="Windows" protectionLevel ="EncryptAndSign" />
< message clientCredentialType ="Windows" />
</ security >
</ binding >
</ netTcpBinding >
</ bindings >
< services >
< service behaviorConfiguration ="MyBehavior" name ="WCFService.Service1" >
< endpoint address ="" binding ="netTcpBinding" contract ="WCFService.IService1" bindingConfiguration ="netTcpBindConfig" ></ endpoint >
< endpoint address ="mex" binding ="mexTcpBinding" contract ="IMetadataExchange" ></ endpoint >
</ service >
</ services >
< behaviors >
< serviceBehaviors >
< behavior name ="MyBehavior" >
< serviceMetadata />
< serviceDebug includeExceptionDetailInFaults ="true" />
< dataContractSerializer maxItemsInObjectGraph ="6553600" />
</ behavior >
</ serviceBehaviors >
</ behaviors >
</ system.serviceModel >

第二,我们需要将WCF Application这个项目的属性更改一下,方便开发时的访问服务,右击服务的项目属性,切换到WEB页面

image

在创建虚拟目录时也许VS会提示需要安装IIS6的一些组件,那么我们按照提示打开”windows的更新安装“

要将WCF的tcp绑定方式的服务host在IIS上,首先你需要启用这个功能

image

其次,需要安装IIS6的兼容性和管理工具

image

等这些都做完之后你可以浏览一下服务了,但是有可能会遇到一个错误提示:

处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandl…

出现这个问题你需要确认两个问题,第一个是SVC的文件请求是哪个DLL来处理的,

image

第二个是确认等IIS7全部配置完毕后,需要重新将asp.net4.0注册到IIS上

image

在vs2010中再浏览一下服务http://localhost/WCFService/Service1.svc,发现已经OK了

image

于是,我们可以正常引用并使用这个服务了

image

引用服务完成后,调用的效果是:

image

源代码:http://files.cnblogs.com/wengyuli/WCFTcpHostToIIS.rar

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值