BizTalk将平面文件发送到Web服务

时间:2010-02-27 21:09:58

标签: web-services wsdl biztalk

我目前有一个BizTalk 2006(r1)应用程序,它使用SQL适配器从SQL存储过程接收XML。它在发送给第三方之前将其映射到另一个模式。发送端口使用自定义管道组件,该组件将XML转换为平面文件 - 采用客户要求的格式。我不使用任何业务流程,这是一个基于纯消息的解决方案。

通过FTP发送时,这一切都很有效。但是,第三方现在要求我将消息推送到他们所托管的Web服务。我还没有收到WSDL,但可以假设我将调用的方法只接收一个字符串作为单个参数。

有人可以建议最好的方法吗?我创建了一个简单的Web服务存根。然后我按照优秀的BizTalk 2006 Recipes一书中的Recipe 6-11,使用wsdl.exe生成一个代理类,然后我从SOAP发送端口的“Web服务”选项卡中引用它。但是,在处理订单时,我在事件日志中收到以下消息:

无法从程序集“Direct.IS.Payment.Components,Version = 3.1.145.0,Culture = neutral,PublicKeyToken = dc03da781bea1472'。”加载类型'WSProxy'。  该类型必须派生自System.Web.Services.Protocols.SoapHttpClientProtocol。  该类型必须具有System.Web.Services.WebServiceBindingAttribute属性。 ”

下一步将是我使用代理,以便它解决偶数日志消息中提到的派生和属性问题。但是,我不禁想到必须有一种更简单的方法吗?

由于

1 个答案:

答案 0 :(得分:0)

您创建的自定义管道组件未生成适合SOAP传输的消息。不知道最终客户将要做什么,我不会试图让SOAP工作。与此同时,只需使用以下代码启动ASPX页面:

  private void Page_Load(object sender, EventArgs e)
  {
    StreamReader reader = new StreamReader(page.Request.InputStream);
    String xmlData = reader.ReadToEnd(); 
  }

添加代码以将XMLData写入数据库或文本文件或其他内容以查看它是什么。这非常粗糙,不会发送响应代码。它应该让你开始。