可以通过编程方式或使用 BizTalk Server 管理控制台配置 SOAP 接收位置。
如何以编程方式配置 SOAP 接收位置
BizTalk 资源管理器对象模型使你能够以编程方式创建和配置接收位置。 BizTalk Explorer 对象模型公开IReceiveLocation 接收位置配置接口,该接口具有 TransportTypeData 读/写属性。 此属性接受 SOAP 接收位置配置属性包,格式为名称/值对 XML 字符串。 若要在 BizTalk Explorer 对象模型中设置此属性,必须设置 IReceiveLocation 接口的 InboundTransportLocation 属性。
无需设置 IReceiveLocation 接口的 TransportTypeData 属性。 如果未设置,SOAP 适配器将使用 SOAP 接收位置配置的默认值,如下表所示。
下表列出了可以在 SOAP 接收位置的 BizTalk 资源管理器对象模型中设置的配置属性。
| 属性名称 | 类型 | DESCRIPTION |
|---|---|---|
| URI | 字符串 | 包含部署服务器上的 Web 服务的虚拟目录。 |
| AddressableURI | 字符串 | 包含整个可调用 URL 的公共地址字段。 默认值:空白 |
| UseSSO | 布尔型 | 指定 SOAP 适配器是否向到达此接收位置的消息发出单个 Sign-On 票证。 默认值:False |
使用以下格式设置属性:
receiveLocation.TransportTypeData = "<CustomProps><UseSSO vt=\"11\">-1</UseSSO></CustomProps>";
URI 和 AddressableURI 属性是使用接收位置对象的 Address 和 PublicAddress 属性设置的。
以下代码片段演示如何创建 SOAP 接收位置:
谨慎
此示例或指南引用敏感信息,例如连接字符串或用户名和密码。 切勿在代码中硬编码这些值,并确保使用最安全的身份验证来保护机密数据。 有关详细信息,请参阅以下文档:
// Use BizTalk Explorer object model to create new SOAP receive location.
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
//requires project reference to \Program Files\Microsoft BizTalk Server 2009\Developer Tools\Microsoft.BizTalk.ExplorerOM.dll
BtsCatalogExplorer explorer = new Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer();
explorer.ConnectionString = connectionString;
// Add a new Request-Response port
ReceivePort receivePort = explorer.AddNewReceivePort(true);
receivePort.Name = "SampleReceivePort";
receivePort.SendPipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruTransmit"];
// Add primary SOAP receive location
ReceiveLocation receiveLocation = receivePort.AddNewReceiveLocation();
receiveLocation.Name = "SampleReceiveLocation";
receiveLocation.Address = "/PurchaseOrder/POOrchestration.asmx";
receiveLocation.TransportType = explorer.ProtocolTypes["SOAP"];
receiveLocation.TransportTypeData = "<CustomProps><UseSSO vt=\"11\">-1</UseSSO></CustomProps>";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
foreach (ReceiveHandler receiveHandler in explorer.ReceiveHandlers)
{
if (receiveHandler.TransportType.Name == receiveLocation.TransportType.Name)
{
receiveLocation.ReceiveHandler = receiveHandler;
}
}
// Save
explorer.SaveChanges();
如何使用 BizTalk Server 管理控制台配置 SOAP 接收位置
可以在 BizTalk Server 管理控制台中设置 SOAP 接收位置适配器变量。 如果未在接收位置设置属性,将使用 BizTalk Server 管理控制台中设置的默认接收处理程序值。
注释
在完成以下过程之前,必须已添加接收端口。 有关详细信息,请参阅 如何创建接收端口。
为 SOAP 接收位置配置变量
在 BizTalk Server 管理控制台中,展开 BizTalk Server 管理、 BizTalk 组、 应用程序,然后展开要在其中创建接收位置的应用程序。
在 BizTalk Server 管理控制台的左窗格中,单击 “接收端口 ”节点。 然后在右窗格中,右键单击与现有接收位置关联的接收端口或要与新接收位置关联的接收端口,然后单击“ 属性”。
在 “接收端口属性 ”对话框中的左窗格中,选择“ 接收位置”,然后在右窗格中双击现有接收位置,或单击“ 新建”创建新的接收位置。
在“接收位置属性”对话框中,在“类型”旁边的“传输”部分中,从下拉列表中选择 SOAP,然后单击“配置”。
在 “SOAP 传输属性 ”对话框中,执行以下作:
用这个 要执行的操作 虚拟目录加上 Web 服务 .asmx 文件 指定由 BizTalk Web 服务发布向导创建的 .asmx 文件。
此消息的格式类似于以下内容:
/PurchaseOrder/POOrchestration.asmx
.asmx 文件的完整位置在哪里 http://localhost/PurchaseOrder/POOrchestration.asmx. 注意: 发送端口或接收位置的 URI 不能超过 256 个字符。公共地址 指定此接收位置的完全限定 URI。 此属性的值是服务器名称和虚拟目录的组合。 指定的 URI 应指定贸易合作伙伴在向 BizTalk Server 发送消息时要连接到的公共网站 URL。
此信息是可选的,并且不受 BizTalk Server 使用。 此参数可用于允许管理员记录接收位置绑定到的公共 URL。使用单一登录 指示 SOAP 适配器使用企业单一登录。 注意: BizTalk Web Services 发布向导允许使用 SharePoint Portal Server 单一登录;此属性仅启用企业单一登录。 单击 “确定” 。
在“ 接收位置属性 ”对话框中,输入相应的值以完成接收位置的配置,然后单击“ 确定 ”保存设置。 有关 “接收位置属性 ”对话框的信息,请参阅 “如何创建接收位置”。
SOAP 接收位置使用的安全设置在 IIS 中设置。 默认情况下,SOAP 接收位置未设置为使用匿名身份验证。
当 SOAP 客户端调用 Web 服务时,SOAP 适配器使用匿名、基本、摘要或 Windows 集成身份验证对 SOAP 客户端进行身份验证。 如果用户已验证,则用户上下文将传递给接收处理程序。
注释
导致 SOAP 和 HTTP 共享同一进程的任何 IIS 配置都无效。 每个进程只能有一个隔离接收器。
更新虚拟目录以使用 ASP.NET 4.0
启动 Internet Information Services (IIS) 管理器。 单击“ 开始”,单击“ 所有程序”,然后单击“ Internet Information Services”(IIS)管理器。
如果需要连接到远程 IIS 服务器,请右键单击 Internet Information Services 节点,然后单击“ 连接”。
键入远程 IIS 服务器的计算机名称,并在需要时输入凭据。
展开要更新的网站或虚拟目录的服务器名称。
展开 站点。
展开 默认网站。
展开默认网站以查看网站下的虚拟目录。
右键单击要更新为使用 ASP.NET 4.0 的虚拟目录,单击“管理应用程序”,然后单击“高级设置”。 “应用程序池”字段显示所选虚拟目录的应用程序池集。 单击 “确定” 。
在 Internet Information Services (IIS) 管理器窗口中,单击 “应用程序池”。 详细信息窗格显示服务器上的应用程序池列表。
右键单击步骤 8 中设置的应用程序池,然后单击“基本设置”。
在 “编辑应用程序池 ”对话框中,更改以下内容:
.NET Framework 版本 到 4.0
托管管道模式 更改为 经典
单击 确定 以应用更改。