BizTalk开发系列(三十一)配置和使用HTTP适配器
BizTalk的主机分别进程内主机和独立主机。但由于一直使用的是进程内主机,对于独立主机的认识比较模糊,前不久在做一个BizTalk的项目的时 候,个别系统使用HTTP的方式发布Txt之类的文本的。刚好HTTP适配器与其他的适配器有一点不同就是它的接收适配器是宿主在独立主机(IIS)上。 在使用的时候需要进行额外的配置。现在我们就来看一下运行于独立主机上的HTTP接收适配器的使用,以及运行于进程内主机的发送适配器的使用。
为 HTTP 接收位置配置 IIS
BizTalk主机分为进程内主机和进程外主机,进程内主机是指宿主在BizTalk运行时进程的主机,独立主机是指是作为外部进程(如 ISAPI 扩展和 ASP.NET)适配器的宿主。因此在配置HTTP接收位置之前需要先配置IIS的BizTalk接收适配器扩展。
1.首先打开IIS管理器,在Web服务扩展中添加一个新的Web服务扩展。
2.在新的Web扩展中输入扩展的名称和位置,BizTalk扩展的位置一般在:C:\Program Files\Microsoft BizTalk Server 2006\HttpReceive\BTSHTTPReceive.dll 。最后选择设置扩展状态为允许。
3.设置完成之后,可以在IIS的Web服务扩展中查看到新添加的扩展。
配置接收位置
之前讲到了HTTP适配器是运行于独立主机的,因此配置接收位置的时候跟其他适配器有一点不同,也就是除了在BizTalk应用程序里配置之外还需要在独立主机(IIS)上进行配置。
1. 在IIS上创建接收位置的位置比较简单,只需要在IIS上创建一个虚拟目录,将目录的地址指向BizTalk HTTP扩展DLL的目录。不过有两点需要注意,一是为发安全起见将虚拟目录的运行模式选择读取和执行,另外如果需要使用隔离级别需要创建一个独立的运行 池,运行池的帐户要存在于BizTalk Isolated Hosts 和 IIS_WPG组中。并且需要给虚拟目录指定运行池。
为运行池指定用户
为虚拟目录指定运行池
至此您可能会试着去访问此接收位置,由于还未在BizTalk Application中配置接收位置,因此访问时您会收到HTTP 500的错误。不过BizTalk在事件日志中给出了友好的提示,如下。如果在配置或运行过程中出现错误也可以参考这些信息解决。
The BizTalk HTTP receive adapter failed to initialize itself. Possible reasons:
1) Receive location URL is not created/configured correctly.
2) Receive location is not enabled.
3) HTTP receive adapter is not running under a user that has access to management and message databases.
4) Isolated host instance is not created for HTTP Receive adapter.
2. 在BizTalk的Application中配置HTTP接收位置。如下图所示,只需要配置虚拟目录地址即可。
测试
在测试之前我们需要创建一个发送端口来接收来自HTTP接收端口发布的消息。HTTP接收适配器支持Get和Post方法的请求。Get方式的测试我们可以直接在URL后面加上问号再加上您要的请求的数据即可。
Post方法我们可以自己写代码,也可以借用第三方的工具。这里使用的是Fiddler。一个很强大的免费的HTTP Debuger工具。
配置发送端口
由于HTTP的发送适配器是运行于进程内主机的因此配置比接收适配器要简单点,只需要配置目标HTTP路径即可(如果安全上的问题)
测试
基于之前创建好的接收位置,我们在HTTP的发送端口端口订阅从HTTP接收适配器发布过来的消息。同时新建一个Aspx的页面。将接收到的请求数据写到日志(测试时使用小量数据)。
System.IO.StreamReader qr = new System.IO.StreamReader(Request.InputStream, System.Text.Encoding.UTF8); string uriString = qr.ReadToEnd(); if (!string.IsNullOrEmpty(uriString)) { System.Diagnostics.EventLog.WriteEntry("HTTPDemo", "Content:\r\n" + uriString); }
发布HTTP请求之后我们可以在日志中查看到相应的记录。
使用HTTP适配器接收Txt之类的文本.
之所以把接收文本提出来是因为HTTP的接收适配器是宿主在IIS上的,需要请求方主动的请求该路径才可以。但有些系统可能它是通过HTTP的方式将文本发布出来的。比如http://www.cbcye.com/demo.txt 这样路径。所以不能使用HTTP接收适配器去主动请求Txt.那么这个任务就落在了发送适配器上面,但是发送适配器只支持POST方法,Txt文本是无法通过POST方法得到的。
所以需要创建一个接收代理(Aspx页面),代理的作用是接收发送适配器上的请求,然后通过以下的代码向目标路径获取文本数据,并将数据返回,被发送适配器的接收方法获得。需要注意的是需要将前台页面的代码去除。这样才能将接收到的Txt信息原样的返回。
System.IO.StreamReader qr = new System.IO.StreamReader(Request.InputStream, System.Text.Encoding.UTF8); string uriString = qr.ReadToEnd(); if (!string.IsNullOrEmpty(uriString)) { System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uriString); req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.21022)"; System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)req.GetResponse(); System.IO.StreamReader sr = new System.IO.StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8); Response.Write(sr.ReadToEnd()); }
BizTalk开发系列(三十一)配置和使用HTTP适配器的更多相关文章
- BizTalk 开发系列(四十一) BizTalk 2010 BAM 安装手记
使用64位系统可以支持更大的内存,现在服务器基本上都使用64位系统.微软从Windows Server 2008 R2开始服务器版的操作系统也只支持64位了,不过对于像BizTalk这种“繁杂的东西” ...
- BizTalk开发系列(三十三)BizTalk之Excel终极解决方案
Excel作为优秀的客户端数据处理程序得到了广泛的应用. 由于其简单又强大的功能在很多公司或个人的数据处理中占用非常重要的位置. 而BizTalk作为微软的SOA主打产品虽然免费提供了很多Adapte ...
- BizTalk开发系列(三十五) TCP/IP 适配器
BizTalk 的TCP/IP适配器最初是为英国的保健行业开发.该适配器属于BizTalk进程内适配器,将消息通过TCP/IP 套接字符串在BizTalk服务器与远程客户端间进行通讯. TCP/IP适 ...
- BizTalk 开发系列(三十九) BizTalk Server 2009技术概览
BizTalk Server 2009已经发布一段时间了,之前Beta版发布的时候也写过一篇文章<BizTalk Server 2009 Beta初体验>, 当时比较了2006 R2与20 ...
- BizTalk开发系列(三十八)微软BizTalk Server定价和许可[解读]
做BizTalk的项目一段时间了,但是对BizTalk的价格和许可还不是很了解.给客户设计解决方案时大部分产品都是直接按照企业版的功能来设计,很 少考虑到价格和许可方面的因素,以为这个不是我们的事情或 ...
- BizTalk开发系列(三) 单机环境下的BizTalk Server 2006 R2安装
大部分的开发环境都是在单机环境下进行的,今天整理了一下BizTalk Server 2006 R2在单机环境下的安装步骤. 1. 软件需求 在独立服务器中完整安装BizTalk Server 2006 ...
- BizTalk开发系列(三十七) 性能监视器在BizTalk性能测试中的使用
BizTalk应用程序的性能测试和分析是一个非常重要的过程,因为BizTalk的应用程序在Run-time时受部署结构.消息请求数量和消息大小等 的影响很大,因此无论是简单还是复杂的的应用都需要在部署 ...
- BizTalk开发系列(三十四) Xpath
XPath 是在 XML 文档中查找信息的语言,在BizTalk的开发中应用非常广泛,当然你可以不必先学Xpath再去学BizTalk.但是如果对Xpath有一定了解的 话,在很多应用下会使你的开发更 ...
- BizTalk开发系列(三十二)浅谈BizTalk主机性能优化
很多BizTalk的项目都要考虑到性能优化的问题,虽然BizTalk采用多线程处理消息的,大大提高了程序效率.但默认情况下 BizTalk的主机有很多阻止参数会控制BizTalk对服务器的资源使用率, ...
随机推荐
- Uva442 hdu 1082 Matrix Chain Multiplication
要注意取出来的时候 先取出q的是后面那个矩阵 后取出p的是前面的矩阵 所以是判断 p.a == q.b #include <iostream> #include <stack> ...
- no-jquery 04 Events
Events Sending Native (DOM) Events anchorElement.click(); Sending Custom Events var event = document ...
- 1140 分珠 dfs
时间限制:500MS 内存限制:65536K提交次数:24 通过次数:18 题型: 编程题 语言: G++;GCC Description 如下图所示,有若干珠子,每颗珠子重量不同,珠子之间有一 ...
- 使用dSYM分析App崩溃日志
前言 我们在开发App过程中,因为连接到控制台,所以遇到问题会很容易找到问题代码.但是对于线上的App出现Crash的时候,我们不可能通过这种方式,也不现实,所以我们只能通过收集Crash信息,来解决 ...
- web api :Routing in ASP.NET Web API
引 Web API 和SignalR都是在服务层. If you are familiar with ASP.NET MVC, Web API routing is very similar to M ...
- angularjs指令(一)
前面通过视频学习了解了指令的概念,这里学习一下指令中的作用域的相关内容. 通过独立作用域的不同绑定,可以实现更具适应性的自定义标签.借由不同的绑定规则绑定属性,从而定义出符合更多应用场景的标签. 本篇 ...
- WPF DataGrid Control
Introduction Since .NET 4.0, Microsoft is shipping a DataGrid control that provides all the basic fu ...
- iOS学习06C语言结构体
1.结构体的概述 在C语言中,结构体(struct)指的是一种数据结构,是C语言中构造类型的其中之一. 在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名.年龄.身高 ...
- hive :MetaException(message:Version information not found in metastore. )
MetaException(message:Version information not found in metastore. ) Hive now records the schema vers ...
- 拓展企业VR培训业务,这家VR训练公司StriVR完成500万美元融资!
虚拟现实初创公司StriVR最近发布了新的企业VR训练产品项目,并宣布在刚刚结束的首轮融资中获得500万美元投资.由Signia Venture Partners领投,宝马i Venturesi.Ad ...