BizTalk开发系列(三十一)配置和使用HTTP适配器
更多內(nèi)容請(qǐng)查看:BizTalk動(dòng)手實(shí)驗(yàn)系列目錄
? ? ? ? ? ? ? ? ? ? ??BizTalk 開發(fā)系列
???? BizTalk的主機(jī)分別進(jìn)程內(nèi)主機(jī)和獨(dú)立主機(jī)。但由于一直使用的是進(jìn)程內(nèi)主機(jī),對(duì)于獨(dú)立主機(jī)的認(rèn)識(shí)比較模糊,前不久在做一個(gè)BizTalk的項(xiàng)目的時(shí)候,個(gè)別系統(tǒng)使用HTTP的方式發(fā)布Txt之類的文本的。剛好HTTP適配器與其他的適配器有一點(diǎn)不同就是它的接收適配器是宿主在獨(dú)立主機(jī)(IIS)上。在使用的時(shí)候需要進(jìn)行額外的配置。現(xiàn)在我們就來看一下運(yùn)行于獨(dú)立主機(jī)上的HTTP接收適配器的使用,以及運(yùn)行于進(jìn)程內(nèi)主機(jī)的發(fā)送適配器的使用。
?
為 HTTP 接收位置配置 IIS
?????? BizTalk主機(jī)分為進(jìn)程內(nèi)主機(jī)和進(jìn)程外主機(jī),進(jìn)程內(nèi)主機(jī)是指宿主在BizTalk運(yùn)行時(shí)進(jìn)程的主機(jī),獨(dú)立主機(jī)是指是作為外部進(jìn)程(如 ISAPI 擴(kuò)展和 ASP.NET)適配器的宿主。因此在配置HTTP接收位置之前需要先配置IIS的BizTalk接收適配器擴(kuò)展。
1.首先打開IIS管理器,在Web服務(wù)擴(kuò)展中添加一個(gè)新的Web服務(wù)擴(kuò)展。
2.在新的Web擴(kuò)展中輸入擴(kuò)展的名稱和位置,BizTalk擴(kuò)展的位置一般在:C:\Program Files\Microsoft BizTalk Server 2006\HttpReceive\BTSHTTPReceive.dll 。最后選擇設(shè)置擴(kuò)展?fàn)顟B(tài)為允許。
3.設(shè)置完成之后,可以在IIS的Web服務(wù)擴(kuò)展中查看到新添加的擴(kuò)展。
?
?
配置接收位置
?? 之前講到了HTTP適配器是運(yùn)行于獨(dú)立主機(jī)的,因此配置接收位置的時(shí)候跟其他適配器有一點(diǎn)不同,也就是除了在BizTalk應(yīng)用程序里配置之外還需要在獨(dú)立主機(jī)(IIS)上進(jìn)行配置。
?? 1. 在IIS上創(chuàng)建接收位置的位置比較簡單,只需要在IIS上創(chuàng)建一個(gè)虛擬目錄,將目錄的地址指向BizTalk HTTP擴(kuò)展DLL的目錄。不過有兩點(diǎn)需要注意,一是為發(fā)安全起見將虛擬目錄的運(yùn)行模式選擇讀取和執(zhí)行,另外如果需要使用隔離級(jí)別需要?jiǎng)?chuàng)建一個(gè)獨(dú)立的運(yùn)行池,運(yùn)行池的帳戶要存在于BizTalk Isolated Hosts 和 IIS_WPG組中。并且需要給虛擬目錄指定運(yùn)行池。
為運(yùn)行池指定用戶
為虛擬目錄指定運(yùn)行池
???? 至此您可能會(huì)試著去訪問此接收位置,由于還未在BizTalk Application中配置接收位置,因此訪問時(shí)您會(huì)收到HTTP 500的錯(cuò)誤。不過BizTalk在事件日志中給出了友好的提示,如下。如果在配置或運(yùn)行過程中出現(xiàn)錯(cuò)誤也可以參考這些信息解決。
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接收位置。如下圖所示,只需要配置虛擬目錄地址即可。
測試
??? 在測試之前我們需要?jiǎng)?chuàng)建一個(gè)發(fā)送端口來接收來自HTTP接收端口發(fā)布的消息。HTTP接收適配器支持Get和Post方法的請(qǐng)求。Get方式的測試我們可以直接在URL后面加上問號(hào)再加上您要的請(qǐng)求的數(shù)據(jù)即可。
??
?? Post方法我們可以自己寫代碼,也可以借用第三方的工具。這里使用的是Fiddler。一個(gè)很強(qiáng)大的免費(fèi)的HTTP? Debuger工具。
?
?
配置發(fā)送端口
?? 由于HTTP的發(fā)送適配器是運(yùn)行于進(jìn)程內(nèi)主機(jī)的因此配置比接收適配器要簡單點(diǎn),只需要配置目標(biāo)HTTP路徑即可(如果安全上的問題)
測試
??? 基于之前創(chuàng)建好的接收位置,我們?cè)贖TTP的發(fā)送端口端口訂閱從HTTP接收適配器發(fā)布過來的消息。同時(shí)新建一個(gè)Aspx的頁面。將接收到的請(qǐng)求數(shù)據(jù)寫到日志(測試時(shí)使用小量數(shù)據(jù))。
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);?
????????}?
?
發(fā)布HTTP請(qǐng)求之后我們可以在日志中查看到相應(yīng)的記錄。
?
?
使用HTTP適配器接收Txt之類的文本.?
?? 之所以把接收文本提出來是因?yàn)镠TTP的接收適配器是宿主在IIS上的,需要請(qǐng)求方主動(dòng)的請(qǐng)求該路徑才可以。但有些系統(tǒng)可能它是通過HTTP的方式將文本發(fā)布出來的。比如http://www.cbcye.com/demo.txt 這樣路徑。所以不能使用HTTP接收適配器去主動(dòng)請(qǐng)求Txt.那么這個(gè)任務(wù)就落在了發(fā)送適配器上面,但是發(fā)送適配器只支持POST方法,Txt文本是無法通過POST方法得到的。
所以需要?jiǎng)?chuàng)建一個(gè)接收代理(Aspx頁面),代理的作用是接收發(fā)送適配器上的請(qǐng)求,然后通過以下的代碼向目標(biāo)路徑獲取文本數(shù)據(jù),并將數(shù)據(jù)返回,被發(fā)送適配器的接收方法獲得。需要注意的是需要將前臺(tái)頁面的代碼去除。這樣才能將接收到的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());
}
轉(zhuǎn)載于:https://www.cnblogs.com/cbcye/archive/2008/12/06/1349142.html
總結(jié)
以上是生活随笔為你收集整理的BizTalk开发系列(三十一)配置和使用HTTP适配器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: __name__属性
- 下一篇: Database