XSD中缺少响应和DTO对象

时间:2012-11-28 15:59:47

标签: soap xsd servicestack

我正在使用最新版本的ServiceStack和NuGet。我有一个基本的服务设置,可以正常使用JsonServiceClient,并按预期传递所有单元测试。

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

我遇到的是我们的DTO包括Response对象没有被填充到ServiceStack通过元数据页面生成的XSD或wsdl中。这看起来非常奇怪,因为在查看单个SOAP操作示例时,生成的示例中会显示正确的Response和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命名空间。

1 个答案:

答案 0 :(得分:0)

我已经下载了源代码并自行完成了一些调查。我不确定这个更改最近有多少但是为了让你的DTO和Response对象包含在wsdl中,你需要添加一个查询字符串,如“?includeAllTypes = true”。

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