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适配器的更多相关文章

  1. BizTalk 开发系列(四十一) BizTalk 2010 BAM 安装手记

    使用64位系统可以支持更大的内存,现在服务器基本上都使用64位系统.微软从Windows Server 2008 R2开始服务器版的操作系统也只支持64位了,不过对于像BizTalk这种“繁杂的东西” ...

  2. BizTalk开发系列(三十三)BizTalk之Excel终极解决方案

    Excel作为优秀的客户端数据处理程序得到了广泛的应用. 由于其简单又强大的功能在很多公司或个人的数据处理中占用非常重要的位置. 而BizTalk作为微软的SOA主打产品虽然免费提供了很多Adapte ...

  3. BizTalk开发系列(三十五) TCP/IP 适配器

    BizTalk 的TCP/IP适配器最初是为英国的保健行业开发.该适配器属于BizTalk进程内适配器,将消息通过TCP/IP 套接字符串在BizTalk服务器与远程客户端间进行通讯. TCP/IP适 ...

  4. BizTalk 开发系列(三十九) BizTalk Server 2009技术概览

    BizTalk Server 2009已经发布一段时间了,之前Beta版发布的时候也写过一篇文章<BizTalk Server 2009 Beta初体验>, 当时比较了2006 R2与20 ...

  5. BizTalk开发系列(三十八)微软BizTalk Server定价和许可[解读]

    做BizTalk的项目一段时间了,但是对BizTalk的价格和许可还不是很了解.给客户设计解决方案时大部分产品都是直接按照企业版的功能来设计,很 少考虑到价格和许可方面的因素,以为这个不是我们的事情或 ...

  6. BizTalk开发系列(三) 单机环境下的BizTalk Server 2006 R2安装

    大部分的开发环境都是在单机环境下进行的,今天整理了一下BizTalk Server 2006 R2在单机环境下的安装步骤. 1. 软件需求 在独立服务器中完整安装BizTalk Server 2006 ...

  7. BizTalk开发系列(三十七) 性能监视器在BizTalk性能测试中的使用

    BizTalk应用程序的性能测试和分析是一个非常重要的过程,因为BizTalk的应用程序在Run-time时受部署结构.消息请求数量和消息大小等 的影响很大,因此无论是简单还是复杂的的应用都需要在部署 ...

  8. BizTalk开发系列(三十四) Xpath

    XPath 是在 XML 文档中查找信息的语言,在BizTalk的开发中应用非常广泛,当然你可以不必先学Xpath再去学BizTalk.但是如果对Xpath有一定了解的 话,在很多应用下会使你的开发更 ...

  9. BizTalk开发系列(三十二)浅谈BizTalk主机性能优化

    很多BizTalk的项目都要考虑到性能优化的问题,虽然BizTalk采用多线程处理消息的,大大提高了程序效率.但默认情况下 BizTalk的主机有很多阻止参数会控制BizTalk对服务器的资源使用率, ...

随机推荐

  1. (转)qsort和sort

    1.qsort函数: 原 型: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)) ...

  2. Service Provider模式

    参考文章:[http://blog.csdn.net/zl3450341/article/details/7227197] Service Interface:服务接口,将服务通过抽象统一声明,供客户 ...

  3. Cgroups控制cpu,内存,io示例

    Cgroups是control groups的缩写,最初由Google工程师提出,后来编进linux内核. Cgroups是实现IaaS虚拟化(kvm.lxc等),PaaS容器沙箱(Docker等)的 ...

  4. .net平台下C#socket通信(上)

    在开始介绍socket前先补充补充基础知识,在此基础上理解网络通信才会顺理成章,当然有基础的可以跳过去了.都是废话,进入正题. TCP/IP:Transmission Control Protocol ...

  5. Learning storm book 笔记8-Log Processing With Storm

    有代码的书籍看起来就是爽,看完顺便跑个demo,感觉很爽! 场景分析 主要是利用apache的访问日志来进行分析统计 如用户的IP来源,来自哪个国家或地区,用户使用的Os,浏览器等信息,以及像搜索的热 ...

  6. linux建立ssh信任关系

    一.建立SSH信任将A主机做为客户端(发起SSH请求 ip:192.168.200.170)将B主机作为服务器端(接收ssh请求   ip:192.168.200.149)以上以主动发起SSH登录请求 ...

  7. BZOJ3591: 最长上升子序列

    因为是一个排列,所以可以用$n$位二进制数来表示$O(n\log n)$求LIS时的单调栈. 首先通过$O(n^22^n)$的预处理,求出每种LIS状态后面新加一个数之后的状态. 设$f[i][j]$ ...

  8. BZOJ4260 Codechef REBXOR 题解

    题目大意: 有一个长度为n的序列,求1≤l1≤r1<l2≤r2≤n使得(⊕r1i=l1ai)+(⊕r2i=l2ai)最大,输出这个最大值. 思路: 用Trie求出前缀异或和以及后缀异或和,再求出 ...

  9. ACM 最少步数

    最少步数 时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...

  10. 洛谷 P1449 后缀表达式 Label:表达式计算系列

    题目描述 所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级). 如:3*(5–2)+7对应 ...