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. CSS3_实现圆角效果box-shadow

    1.outline的直角与圆角 来给个div: <div class="use-outline"></div> 来再给个样式: .use-outline{ ...

  2. npm 模块常用命令

    mocha mocha --compilers js:babel/register : 在babel模式下测试,默认查找test文件夹,注意此时全局不要安装babel; ./node_modules/ ...

  3. 20145223《Java程序程序设计》第1周学习总结

    20145223 <Java程序设计>第1周学习总结 教材学习内容总结 1.JDK.JRE以及JVM的区别 JDK:撰写java程序语言的时候需要用到的编译工具 JRE:java执行环境 ...

  4. hdu 4000Fruit Ninja 树状数组

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  5. ASP.NET MVC3 中整合 NHibernate3.3、Spring.NET2.0 使用AOP执行事务处理

    方法1 <object id="ServiceOperation" type="Spring.Aop.Support.SdkRegularExpressionMet ...

  6. 选项卡 tab切换

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Linux 积累

    Unable to locate package 解决办法: sudo apt-get update

  8. Azkaban 2.5.0 job type 插件安装

    一.环境及软件 安装环境: 安装目录: /usr/local/ae/ankaban Hadoop 安装目录 export HADOOP_HOME=/usr/local/ae/hadoop-1.2.1 ...

  9. Repeater 双向排序

      做项目的时候,DataGrid ,DataList,Repeater 三个控件都是很优秀的数据显示控件,DataGrid的方便,简单易用,功能强大,但对性能会有所影响,在loading页面的时候大 ...

  10. iOSDay27之界面通信

    1. 属性传值(前面的界面给后面传值) 第一步: 在 SecondViewController.h 文件里定义一个存放传过来值的变量 contents #import <UIKit/UIKit. ...