将使用netTcp绑定的WCF服务寄宿到IIS7上全记录 (这文章也不错)
2015-07-24 12:06
686 查看
原文地址:/article/4831149.html
代码
[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的配置非常简单,自动生成不作介绍。
代码
<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页面
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_8.png)
在创建虚拟目录时也许VS会提示需要安装IIS6的一些组件,那么我们按照提示打开”windows的更新安装“
要将WCF的tcp绑定方式的服务host在IIS上,首先你需要启用这个功能
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_2.png)
其次,需要安装IIS6的兼容性和管理工具
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_3.png)
等这些都做完之后你可以浏览一下服务了,但是有可能会遇到一个错误提示:
处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandl…
出现这个问题你需要确认两个问题,第一个是SVC的文件请求是哪个DLL来处理的,
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_4.png)
第二个是确认等IIS7全部配置完毕后,需要重新将asp.net4.0注册到IIS上
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb.png)
在vs2010中再浏览一下服务http://localhost/WCFService/Service1.svc,发现已经OK了
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_1.png)
于是,我们可以正常引用并使用这个服务了
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_5.png)
引用服务完成后,调用的效果是:
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_9.png)
源代码:http://files.cnblogs.com/wengyuli/WCFTcpHostToIIS.rar
摘要
在项目开发中,我们可能会适时的选择http或者tcp绑定的wcf服务,可以使用控制台来托管服务,也可以使用IIS来承载服务,由于IIS本身对于请求和异常的处理能力,使得我们可以省去很多开发精力而成为托管服务的首选,之前我做的WCF服务时托管在控制台的,今天摸索了一下采用tcp绑定的wcf托管到IIS7的过程,分享一下,希望能帮助到想移植服务到IIS的朋友。实例
依然是以一个服务作为例子展开,我们新建一个WCF Application,默认有一个简单的服务Service1.svc,代码
[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的配置非常简单,自动生成不作介绍。
代码
<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页面
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_8.png)
在创建虚拟目录时也许VS会提示需要安装IIS6的一些组件,那么我们按照提示打开”windows的更新安装“
要将WCF的tcp绑定方式的服务host在IIS上,首先你需要启用这个功能
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_2.png)
其次,需要安装IIS6的兼容性和管理工具
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_3.png)
等这些都做完之后你可以浏览一下服务了,但是有可能会遇到一个错误提示:
处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandl…
出现这个问题你需要确认两个问题,第一个是SVC的文件请求是哪个DLL来处理的,
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_4.png)
第二个是确认等IIS7全部配置完毕后,需要重新将asp.net4.0注册到IIS上
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb.png)
在vs2010中再浏览一下服务http://localhost/WCFService/Service1.svc,发现已经OK了
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_1.png)
于是,我们可以正常引用并使用这个服务了
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_5.png)
引用服务完成后,调用的效果是:
![](http://images.cnblogs.com/cnblogs_com/wengyuli/Windows-Live-Writer/WCF_14955/image_thumb_9.png)
源代码:http://files.cnblogs.com/wengyuli/WCFTcpHostToIIS.rar
相关文章推荐
- HTTP协议知识总结
- [网络编程]TCP协议和UDP协议的区别
- 网络请求5步
- OCR文字识别HTTP restapi接口设计
- tcpdump非常实用的抓包实例
- 利用response和HttP中的Content-Disposition: attachment; filename=aaa.zip响应头,实现简单的文件下载
- WCF:如何将net.tcp协议寄宿到IIS
- Http长连接200万尝试及调优
- http://focus.it168.com/200812/testframe/ 软件测试框架技术专题
- 【实习项目记录】(三)调整网络图片固定宽高
- 通过http不能访问filesystem的原因
- 用Java编写你自己的简单HTTP服务器
- $http.post发的数据,后台取不到
- 获得当前的网络连接状态
- 网络编程释疑之:单台服务器上的并发TCP连接数可以有多少
- 网络编程
- Android提高(18)——第二章 HttpUrlConnection介绍
- 网络编程
- HTTP 协议
- iOS 网络编程 UIScrollView contentsize contentoffset 和contentinset的区别