BizTalk Server 2010 用に作成したアダプターを使用して、送信ポートを含むアプリケーションをエクスポートするときに、パスワードのクリアに問題があります。
送信ポートは、Microsoft.Samples.BizTalk.Adapter.Common BaseAdapter (v.1.0.2) に基づいて作成したアダプターを使用します。
TransmitLocation.xsd および TransmitHandler.xsd スキーマは両方とも AdapterFramework パスワード固有のフィールドを使用し、両方とも次のように定義されています。
<xs:element minOccurs="1" default="" name="passwordField">
<xs:simpleType>
<xs:annotation>
<xs:appinfo>
<baf:designer xmlns:baf="BiztalkAdapterFramework.xsd">
<baf:category _locID="mailAuthIndstillingerKategori">Password related category</baf:category>
<baf:displayname _locID="passwordName">Password:</baf:displayname>
<baf:description _locID="passwordDescription">Password description.</baf:description>
<baf:editor assembly="%BTSROOT%\\Developer Tools\\Microsoft.BizTalk.Adapter.Framework.dll">Microsoft.BizTalk.Adapter.Framework.ComponentModel.PasswordUITypeEditor</baf:editor>
<baf:converter assembly="%BTSROOT%\\Developer Tools\\Microsoft.BizTalk.Adapter.Framework.dll">Microsoft.BizTalk.Adapter.Framework.ComponentModel.PasswordTypeConverter</baf:converter>
</baf:designer>
</xs:appinfo>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
一部の google-hitsでは、クリアする必要がある要素に' vt="1" ' 属性を設定するとうまくいくはずだと述べています。ValidateConfiguration()が呼び出されたときに、この属性を設定/追加しようとしました。ただし、構成 XML は文字列として返され、 <CustomProps> xmlに挿入される前にエスケープされ、バインディング ファイルにエクスポートされます。
レジストリ エントリで、SendHandlerPropertiesXMLとSendLocationPropertiesXMLのAdapterConfigが次の<CustomProps>をvt="1"属性と共に使用するように指定しようとしました。これにより、ポートのバインディング プロパティ全体が空白になることを期待しています。 (最適ではありませんが、誰かにパスワードをエクスポートさせるよりは良い解決策です):
SendHandlerPropertiesXML : <CustomProps><AdapterConfig vt="1"/></CustomProps>
SendLocationPropertiesXML : <CustomProps><AdapterConfig vt="1"/></CustomProps>
構成された送信ポートを持つアプリケーションがエクスポートされると、特定の XML は次のようになります。
<TransportTypeData><CustomProps><AdapterConfig vt="1">&lt;Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;&lt;passwordField vt="1"&gt;CLEARTEXTPASSWORD;lt;/passwordField&gt;&lt;uri&gt;SMTP://NOT-USED&lt;/uri&gt;&lt;/Config&gt;</AdapterConfig></CustomProps></TransportTypeData>
バインディングがエクスポートされるたびに、アダプターのオーバーロードされたメソッドであるValidateConfiguration()が呼び出されますが、これがアダプターが構成されたときなのか、バインディングがエクスポートされているときなのかを判断する方法はありません。つまり、パスワードを変更することはできません。設定時にパスワードもマングルするため、返される xml-string に含まれます。
これを行う他の組み込みアダプター (例: SMTP アダプター) があり、私が誤解しているのは基本的なものだと確信しています。しかし、ヘルプやポインタは非常に役に立ちます。