将使用netTcp绑定的WCF服务寄宿到IIS7上全记录

摘要

在项目开发中,我们可能会适时的选择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的配置非常简单,自动生成不作介绍。
复制代码

开始移植

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

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

配置文件如下:

  
复制代码
代码
<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

 

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

posted @   翁玉礼  阅读(7840)  评论(33编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示