一.     项目描述

使用biztalk2006在vs2005开发环境中做一个简单的测试业务流程,主要是测试使用biztalk发布一个web services,这个web services接受用户发送的请求,然后根据用户要求通过sql adapter到sql server数据库中提取相关数据,最后作为web services的response返回给用户。

业务流程如下:

图中,Port_2是双向接收端口,就是这个端口需要发布为web services,Port_1是一个用sql adapter向导做的双向发送端口,使用的是存储过程,参数只有一个Rows,指示需要获取的数据行数,存储过程返回Rows要求行数的数据。

相应的Schema也很简单:

Biztalk项目做好后,编译,部署,一切顺利。

在biztalk管理器中,在这个应用程序中添加物理发送端口,指向相应的数据库连接,指定返回的Schema类型,绑定了Port_1逻辑端口。

最后用biztalk web services发布向导做Port_2端口的web services的发布设置。按照向导的指示一步步的做,其中有一步需要选择是否将此web services指定给某个应用程序的接收位置,在这里选择作为本应用程序的接收位置,这样就将要生成的web services跟Port_2端口进行了绑定。

在biztalk管理器中启动这个应用程序,启动正常。

二.     问题现象

建立一个winform的应用,引用上面过程中发布的web services,引用后在项目中生成这个web services代理类,拥有一个叫做Operation_1的方法,这个方法就是Port_2端口定义的操作名。

在界面上放置一个button,在这个button的点击事件中,新建一个web services代理类的实例,新建一个Operation_1方法的参数的实例,之后调用Operation_1方法,接收Operation_1方法的返回值。

以上是测试场景,调用Operation_1方法的代码处设置一个断点,调试执行这个winform应用程序,点击button,程序在调用Operation_1方法处遇到断点中断,这时进行单步调试,程序执行调用Operation_1方法,实际就是调用web services的操作,结果返回一个错误:SOAP内部处理失败(SoapException: Internal SOAP Processing Failure)。同时在事件查看器中有以下的错误提示:

l         用户 'NT AUTHORITY\NETWORK SERVICE' 登录失败。

l         试图连接到服务器“JINJZ2003”上的“BizTalkMgmtDb”SQL Server 数据库失败。 错误:“无法打开登录所请求的数据库 "BizTalkMgmtDb"。登录失败。”
(An attempt to connect to "BizTalkMgmtDb" SQL Server database on server "Server" failed with error: "Cannot open database requested in login 'BizTalkMgmtDb'. Login fails.".)

l         消息引擎无法注册接收位置“/BiztalkSqlSP_Proxy/BiztalkSqlSP_Orchestration_1_Port_2.asmx”的“SOAP”的适配器。请验证接收位置存在,且独立的适配器在可以访问 BizTalk 数据库的帐户下运行。
(The Messaging Engine failed to register the adapter for "SOAP" for the receive location "/VirtualDirectory/Name.asmx". Please verify that the receive location is valid, and that the isolated adapter runs under an account that has access to the BizTalk databases.)

三.     解决过程

根据错误提示,到微软的支持网站查询,果然有这个错误的相关说明和处理方法,是因为web services对应的应用程序池的帐户不是BizTalk Isolated Host Users组的成员。 BizTalk Isolated Host Users组具有对'BizTalkMgmtDb'数据库的访问权限。同时这个帐户也必须是IIS_WPG组的成员。

查看了IIS中这个web services对应的应用程序池是DefaultAppPool,DefaultAppPool对应的帐户是网络服务(network service),在IIS_WPG组中有network service帐户,可是在BizTalk Isolated Host Users组中没有network service帐户,于是在BizTalk Isolated Host Users组中加入network service帐户。测试,故障依旧,在事件查看器中依然有错误提示:network service无法登录'BizTalkMgmtDb'数据库。真是有点奇怪。

将DefaultAppPool对应的帐户改为“IWAM_机器名”,同时也把“IWAM_机器名”加入到BizTalk Isolated Host Users组和在IIS_WPG组,然后重新启动IIS,再进行测试。依然有错误,不过这次错误提示不是原来的“SoapException: Internal SOAP Processing Failure”,改成了“System.Web.Services.Protocols.SoapException: 服务器无法处理请求。 ---> System.InvalidOperationException: 无法生成临时类(result=1)。\nerror CS2001: 未能找到源文件“C:\\WINDOWS\\TEMP\\zyobqxbr.0.cs()”

看来数据库访问权限的问题解决了,查看事件查看器也没有了数据访问的错误记录。就新产生的错误去查微软支持网站,找到相关内容,说web services对应的应用程序池的帐户需要对%systemroot%\Temp文件夹有读写权限,因为Web service (.asmx)文件的JIT会在%systemroot%\Temp文件夹编译生成DLL文件,如果应用程序池的帐户没有%systemroot%\Temp文件夹的读写权,就不能生成相关的dll文件。

按此说明,设置给“IWAM_机器名”帐户读写%systemroot%\Temp文件夹的读写权,再测试,OK,成功,Operation_1方法成功的返回的预期的结果。

参考文档:

1.       BizTalk Server 2004 和 Web 服务:http://www.microsoft.com/china/MSDN/library/WebServices/WebServices/BTS2004WP5cab05ab.mspx?mfr=true

2.       You cannot call an orchestration that is exposed as a Web service on a server that is running BizTalk Server 2004:http://support.microsoft.com/?kbid=910295

转载于:https://www.cnblogs.com/chnking/archive/2006/06/10/422639.html

Biztalk发布web服务时遭遇'SoapExceptionInternal SOAP Processing Failure'错误相关推荐

  1. 编写两个过滤器,一个过滤器在 web 服务时,起用 UTF-8 编码,以处理 web 服务时的乱码问题。 另一个过滤器用来判断用户是否登录,只有登录用户方可访问/view 子目录。

    首先我们要实现两个过滤器其实很简单,我们需要准备好两个jsp一个是登录的jsp(我这里使用login.jsp),一个是登录成功的jsp(loginsuccess.jsp),一个servlet,两个过滤 ...

  2. asp.net发布web service时出现“未能创建类型”错误

    asp.net发布web service时出现"未能创建类型"错误 如果直接将web service发布之后,如果不转换成"应用程序"的话,将产生"未 ...

  3. java上传文件需要的依赖_java – 执行文件上载休息Web服务时缺少方法依赖性

    我一直在努力了解如何解决此错误: SEVERE: Missing dependency for method public java.lang.String com.myrest.FileServic ...

  4. arcgis server mysql_ArcGIS Server 10.1发布要素服务时遇到的数据库注册问题总结 (二)...

    在上一篇文章中: 说到应用该博文方法. 最后发布失败.今天有琢磨了半天,终于成功了. 解决方法: 1.删除ArcGIS Server Account账户,重新Postinstall. 2.删除SQL ...

  5. Labview发布web service时出现错误 Error LabVIEW: (Hex 0xFFFEFA29)

    这里写自定义目录标题 问题由来 解决方案 问题由来 按照labview的帮助文档,练习web service,在发布的时候提示错误Error LabVIEW: (Hex 0xFFFEFA29). 解决 ...

  6. 在Eclipse中,用XFire发布web服务

    配置及相关说明见http://www.cnblogs.com/xshy3412/archive/2007/09/29/910848.html 仅确定发布xfire需要的最基本的jar activati ...

  7. GeoServer使用WFS服务时出414 URI Too Long错误

    问题描述 前端通过 GET 方法向 GeoServer 请求数据,请求网址如下 http://192.168.10.11/geo/geoserver/Test/ows?service=wfs& ...

  8. Web服务和WSDL简介

    在"使用 WSDL 部署 Web 服务"系列中,Bilal 将研究创建.部署和发布 Web 服务的所有主要技术方面 - 从 Web 服务描述语言(WSDL),到简单对象访问协议(S ...

  9. 用WSE在Web服务中验证用户身份

    一.Web服务安全与WS-Security 毫无疑问,SOAP和XML Web服务在交互操作和标准上已经完全改变了电子商务领域的格局. 然而直到最近,在Web服务技术领域仍然存在着一些缺陷,那就是处理 ...

最新文章

  1. spring-boot学习资料
  2. 启动vm虚拟机里的系统时,提示此主机支持 AMD-V,但 AMD-V 处于禁用状态。
  3. VHDL+Verilog良好的代码编写风格(转载)
  4. FATAL: NO bootable medium found! System halted
  5. MATLAB提取矩阵中的一部分
  6. 关于android的零碎问题的整理
  7. 设置redis访问密码
  8. Ext JS 6开发实例(三) :主界面设计
  9. 【java】变量的应用
  10. 有长度要求的区间最大值
  11. python处理时间序列非平稳_非平稳时间序列的自相关
  12. 短视频转场 10个炫酷故障数字闪变PR转场过渡模板
  13. 利用AD13设计PCB的问题总结1-10
  14. 识别到硬盘 计算机不显示盘符,Win10系统下移动硬盘可以识别但是不显示盘符的解决方法...
  15. 还在使用手写笔记?又或者使用TXT、Word做笔记?NoNoNo,你需要一款合适的电子笔记!
  16. 赫兹的单位换算_「频率单位」CPU频率和单位换算 - seo实验室
  17. ubuntu 运行c语言文件路径,ubuntu上解压目录里的文件到指定文件夹
  18. 身份证号码验证(直接调用idCardValidate(String idCard) )
  19. 统计学(二)之一般线性模型(一)
  20. java是面向对象还是面向过程_Java教程分享Java面向对象与面向过程

热门文章

  1. 工程化专题之Maven(下)
  2. Java Streams,第 1 部分: java.util.stream 库简介
  3. redis:list的底层实现--压缩列表
  4. 网络:.cookie和session原理及区别
  5. 【Python】青少年蓝桥杯_每日一题_6.03_空心三角形图案
  6. 宽屏图片轮播html,jQuery实现宽屏图片轮播实例教程
  7. android studio安装教程博客园独王,Android Studio安装与配置
  8. spark 把一列数据合并_Spark Java-合并同一列多行 - java
  9. 推动数据中心绿色转型(经济透视)
  10. 局域网有几台电脑频繁断网_如何实现几台电脑同步共享资料文件?——用JASTVIN私密云盘...