3

我正在将最新版本的 ServiceStack 与 NuGet 一起使用。我有一个基本的服务设置,可以很好地与 JsonServiceClient 配合使用,并且按预期通过了我们所有的单元测试。

不幸的是,我还在尝试支持 SOAP 和 Visual Studios“添加服务参考”代理生成,以便与希望继续使用这种框架的其他组进行互操作。

我遇到的是我们的 DTO(包括 Response 对象)没有被填充到 ServiceStack 通过元数据页面生成的 XSD 或 wsdl 中。这似乎很奇怪,因为在查看单个 SOAP 操作示例时,生成的示例中显示了正确的响应和 DTO。

示例响应:

Namespace Operations
    <DataContract>
    Public Class GetItemResponse
        Implements IHasResponseStatus

        <DataMember>
        Public Property ResponseStatus As ResponseStatus Implements IHasResponseStatus.ResponseStatus

        <DataMember>
        Public Property Item As Item
    End Class
End Namespace

一个示例 DTO:

Namespace Types
    <DataContract>
    Public Class Item
        <DataMember>
        Public Property ItemIdentifier As String
        <DataMember>
        Public Property ItemId As Guid?
        <DataMember>
        Public Property ItemName As String
        <DataMember>
        Public Property Description As String
        <DataMember>
        Public Property InstallDate As DateTime?
        <DataMember>
        Public Property FeatureNumber As String
        <DataMember>
        Public Property ModelNumber As String
    End Class
End Namespace

我也在使用 Assembly: ContractNamespace 属性来设置 XML 命名空间。

4

1 回答 1

0

我已经下载了源代码并自己进行了一些调查。我不确定此更改有多近,但似乎为了将您的 DTO 和响应对象包含在 wsdl 中,您需要添加一个查询字符串,如“?includeAllTypes = true”。

我还使用了 ServiceStack BasicAuthProvider 设置,它导致 AssignRoles 和 UnAssignRoles 自动添加到服务中。这些调用的请求和响应对象仍然无法进入 wsdl 并导致“添加服务引用”失败。幸运的是,我们没有使用它们,所以如果我能找到另一个配置设置来删除它们,它们应该都能正常工作。

于 2012-11-28T21:13:30.337 回答