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对服务器的资源使用率, ...
随机推荐
- Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
使用命令关闭占用80端口的程序 sudo fuser -k 80/tcp
- hdu 1078 FatMouse and Cheese
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission( ...
- BZOJ3654 : 图样图森破
考虑枚举回文中心,然后向两边扩展,当匹配到当前串的边界的时候,枚举下一个串接上. 这个过程可以通过记忆化搜索来完成,设: $f[i][0]$表示对于$i$这个位置,$[i,串结尾]$等待匹配的最长回文 ...
- Mongoose简单学习笔记
1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对 Entity : 由Mo ...
- Coder-Strike 2014 - Round 1 B. Network Configuration
题目的意思就是给每台电脑的最大传输速度,可以限制每台电脑的最大速度,然后选择k台电脑,使这k台电脑有相同的速度,且这个速度最大 典型的贪心算法,电脑的速度排个序,选择第k大速度即可 #include ...
- jquery 动画效果插件
从jQuery API 文档中可以知道,jQuery自定义动画的函数.animate( properties [, duration] [, easing] [, complete] )有四个参数: ...
- 如何在电脑上测试手机网站(补充)和phonegap
颜海镜 介绍了专业人士精准测试手机网站的经验 http://www.cnblogs.com/yanhaijing/p/3557261.html, 因为太专业了,稍显复杂和琐碎,这里我介绍下我一直关注的 ...
- 【BZOJ】1532: [POI2005]Kos-Dicing
题意 \(n\)个人\(m\)场比赛\((1 \le n \le 10000, 0 \le m \le 10000)\),给出每场比赛的两个选手,求赢得最多的人最少赢的场数. 分析 二分最多人赢的场数 ...
- 使用SQLAlchemy对Firebird数据库进行操作
来这个公司已经一周了,度过了开始的无聊日子准备正式准备做点东西了,这几天接触了一下文件数据库InterBase,尝试在Ubuntu上连接其开源版本Firebird,因为公司使用的是SQLAlchemy ...
- ArcGIS Engine中的数据访问
ArcGIS Engine中的数据访问 数据是GIS的基础, 访问数据也是进行任何复杂的空间分析及空间可视化表达的前提.ArcGIS支持的数据格式比较丰富,对不同的数据格式支持的程度也有很大差异.本文 ...