1

我继承了一个 BizTalk 2006 应用程序,该应用程序使用多个 SOAP 端口从第 3 方 Web 服务请求数据。Web 服务由“基本”身份验证 - 用户名/密码保护。在对应用程序进行了一些改进后,我将其部署到了一个集成测试服务器,该服务器可以访问第 3 方 Web 服务。BizTalk 应用程序无法检索数据,我很快意识到我忘记在 SOAP 发送端口上设置用户名/密码。我希望 BizTalk 应用程序的部署尽可能自动化,因为当它部署到实时服务器时我可能不在场。我打开绑定文件,找到问题 SOAP 发送端口的第一个并查找* BizTalk 用来替换密码的 - 除了它没有!似乎 SOAP 端口的密码设置为 NULL 而不是 *,请参阅此处了解更多详细信息:http: //msdn.microsoft.com/en-us/library/aa547319.aspx

我继续更新绑定,但是当我来测试时,在导入修改后的绑定文件后,我发现我遇到了和以前一样的问题。我已经仔细检查并可以确认绑定文件中现在存在正确的密码,但是,虽然 BizTalk 在导入过程中没有抱怨,但当我运行应用程序时,我得到以下异常:

详细信息:“ArgumentNullException:字符串引用未设置为字符串的实例。参数名称:s”。

如果我随后通过 BizTalk 管理控制台手动修改密码,一切正常。

是否有其他人对 SOAP 端口的绑定有类似的问题 - 有没有人有解决方案?

4

2 回答 2

4

我过去曾被类似的事情所困扰。密码输入为“****”。还行吧。我不希望我的所有秘密都与绑定文件一起导出。当您导出绑定并将密码保留为 NULL 时,您会得到什么。密码的 XML 元素上的变量类型 (vt) 属性设置为 vt="1",这与 NULL 相同。输入什么密码都没有关系。它甚至可能导致您描述的错误。我建议您包含一份绑定 XML 的副本以供审核。

于 2008-12-01T03:15:45.447 回答
0

我以前从未见过这个问题——我正在做你想做的事情,而且效果很好。

我已经从我的一个有效的 BizTalk 绑定中包含了 <TransportTypeData> 元素。希望有一些可以比较的东西会有所帮助。

<TransportTypeData>
&lt;CustomProps&gt;
&lt;AuthenticationScheme vt="8"&gt;Basic&lt;/AuthenticationScheme&gt;
&lt;AssemblyName vt="8"&gt;WebService.ProxyClass, Version=1.0.0.0, 
Culture=neutral, PublicKeyToken=xyz&lt;/AssemblyName&gt;
&lt;Username vt="8"&gt;soapUser&lt;/Username&gt;
&lt;UseProxy vt="11"&gt;0&lt;/UseProxy&gt;
&lt;UseSoap12 vt="11"&gt;0&lt;/UseSoap12&gt;&lt;UsingOrchestration vt="11"&gt;0&lt;/UsingOrchestration&gt;
&lt;UseSSO vt="11"&gt;0&lt;/UseSSO&gt;
&lt;Password vt="8"&gt;MYPASSWORD&lt;/Password&gt;
&lt;ProxyPort vt="3"&gt;80&lt;/ProxyPort&gt;&lt;AssemblyPath
vt="8"&gt;C:\ProxyClass\bin\Debug\ProxyClass.dll&lt;/AssemblyPath&gt;
&lt;TypeName vt="8"&gt;ProxyClass.Webservice.servicesService&lt;/TypeName&gt;
&lt;MethodName vt="8"&gt;PickupRequest&lt;/MethodName&gt;
&lt;UseHandlerSetting vt="11"&gt;-1&lt;/UseHandlerSetting&gt;
&lt;/CustomProps&gt;
</TransportTypeData>
于 2008-11-29T01:00:19.807 回答