我有一个需要从BizTalk业务流程中使用的Web服务。 我已经定义了我在BizTalk中使用的消息模式,它们看起来像
<?xml version="1.0" encoding="utf-16"?>
<xs:schema
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns="http://www.myapp.com/schemas/IntegrationApplication-instance"
xmlns:b="http://schemas.microsoft.com/BizTalk/2003"
xmlns:ns0="https://DTIB.PropertySchema"
elementFormDefault="qualified"
targetNamespace="http://www.myapp.com/schemas/IntegrationApplication-instance"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation=".\CommonTypes.xsd" />
<xs:element name="ProviderRequest">
<xs:complexType>
<xs:sequence>
<xs:element name="Header" type="HeaderType" />
<xs:element name="Parameters" type="ParametersType" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
在WCF服务中,我有像
这样定义的方法public ProviderResponse Provide(ProviderRequest providerRequest) {...}
其中ProviderRequest
定义为
[DataContract(Namespace = "http://www.myapp.com/schemas/IntegrationApplication-instance")]
public class ProviderRequest
{
[DataMember]
public Header Header { get; set; }
[DataMember]
public Parameter[] Parameters { get; set; }
}
当我创建发送端口并尝试发送ProviderRequest消息时,它会失败并出现不同的错误。
使用与BizTalk项目中定义的模式相同的模式的WCF服务的最佳方法是什么?
答案 0 :(得分:1)
您最好的选择是运行服务实例,然后“添加生成的项目” - &gt;从Visual Studio中“使用WCF服务”。
这将生成您的服务消息XSD和端口类型,并且是您正在尝试做的事情的低摩擦方式。
答案 1 :(得分:0)
非常有趣的问题,可能会发生在其他人身上的情景。
以下是一些建议。
最常见的情况:您需要使用服务并希望使用这些消息 - 使用休的建议“添加生成的项目......”
不太常见的情况:您已经创建了服务也使用的架构(相同) - 使用休的建议“添加生成的项目......” - 删除重复的模式,可以是您自己的模式,也可以是创建的
不常见的情况:您希望使用两个使用相同架构的服务 - 使用休的建议“添加生成的项目......” - 从生成的
之一中删除重复的模式从未发生过我的情况:您已经创建了一个服务也使用的模式(不是相同的,但是相同的根名称和名称空间) - 无事可做,这不起作用(开箱即用)