1

我有一个需要从 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 服务的最佳方法是什么?

4

2 回答 2

1

您最好的选择是运行您的服务实例,然后从 Visual Studio 中“添加生成的项目”->“使用 WCF 服务”。

这将生成您的服务消息 XSD 和端口类型,并且是一种低摩擦的方式来做您想做的事情。

于 2011-09-07T15:41:32.523 回答
0

非常有趣的问题,可能发生在其他人身上的场景。

这里有一些建议。

最常见的情况:您需要使用服务并希望使用这些消息 - 使用休的建议“添加生成的项目...”

不太常见的情况:您已经创建了服务也使用的模式(相同) - 使用休的建议“添加生成的项目...” - 删除重复的模式,无论是您自己的还是从创建的

不太常见的情况:您想使用两个使用相同架构的服务 - 使用休的建议“添加生成的项目...” - 从其中一个生成的项目中删除重复的架构

从未发生在我身上的案例:您已经创建了一个服务也使用的模式(不一样,但相同的根名称和命名空间) - 无事可做,这不起作用(开箱即用)

于 2011-11-10T14:27:37.297 回答