我继承了一个BizTalk 2006应用程序,该应用程序使用多个SOAP端口从第三方Web服务请求数据。 Web服务由“基本”身份验证 - 用户名/密码保护。在对应用程序进行一些增强后,我将其部署到可以访问第三方Web服务的集成测试服务器。 BizTalk应用程序无法检索数据,我很快意识到我忘记在SOAP发送端口上设置用户名/密码。我希望BizTalk应用程序的make部署尽可能自动化,因为当它部署到实时服务器时可能不存在。我打开了绑定文件,找到问题SOAP发送端口的第一个,并查找BizTalk用来替换密码的 * - 除了它没有!似乎SOAP端口的密码设置为NULL而不是* ,有关详细信息,请参阅此处: http://msdn.microsoft.com/en-us/library/aa547319.aspx
我继续更新绑定但是当我来测试时,导入修改后的绑定文件后,我发现我遇到了和以前一样的问题。我已经双重检查并确认绑定文件中现在存在正确的密码,但是,虽然BizTalk在导入期间没有抱怨,但是当我运行应用程序时,我得到以下异常:
详细信息:“ArgumentNullException:字符串引用未设置为String的实例。 参数名称:s ”
如果我然后通过BizTalk管理控制台手动修改密码一切正常。
有没有其他人对SOAP端口的绑定有类似的问题 - 有没有人有解决方案?
答案 0 :(得分:4)
我过去一直都是这样的。密码以'****'形式输入。还行吧。我不希望我的所有秘密都与绑定文件一起导出。当您导出绑定并将密码保留为NULL时,您会得到什么。密码的XML元素上的Variable Type(vt)属性设置为vt =“1”,它与NULL相同。你输入密码并不重要。它甚至可能导致您描述的错误。我建议你包括一份绑定XML的副本供审查。
答案 1 :(得分:0)
我以前从未见过这个问题 - 我正在做你正在尝试做的事情并且它完美无缺。
我已经包含< TransportTypeData>来自我的一个BizTalk绑定的元素。希望有一些可以比较的东西有帮助。
<TransportTypeData>
<CustomProps>
<AuthenticationScheme vt="8">Basic</AuthenticationScheme>
<AssemblyName vt="8">WebService.ProxyClass, Version=1.0.0.0,
Culture=neutral, PublicKeyToken=xyz</AssemblyName>
<Username vt="8">soapUser</Username>
<UseProxy vt="11">0</UseProxy>
<UseSoap12 vt="11">0</UseSoap12><UsingOrchestration vt="11">0</UsingOrchestration>
<UseSSO vt="11">0</UseSSO>
<Password vt="8">MYPASSWORD</Password>
<ProxyPort vt="3">80</ProxyPort><AssemblyPath
vt="8">C:\ProxyClass\bin\Debug\ProxyClass.dll</AssemblyPath>
<TypeName vt="8">ProxyClass.Webservice.servicesService</TypeName>
<MethodName vt="8">PickupRequest</MethodName>
<UseHandlerSetting vt="11">-1</UseHandlerSetting>
</CustomProps>
</TransportTypeData>