2012-11-28 27 views
3

我正在使用最新版本的ServiceStack和NuGet。我有一個基本的服務設置,可以與JsonServiceClient一起正常工作,並按預期通過所有的單元測試。來自XSD的響應和DTO對象丟失

不幸的是,我還試圖支持SOAP和Visual Studios的「添加服務引用」代理生成,以便與其他希望繼續使用該類框架的組進行互操作。

我碰到的是,包含Response對象的DTO沒有被填充到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 

我使用的大會:ContractNamespace屬性來設置XML命名空間爲好。

回答

0

我已經下載了源代碼並自行完成了一些調查。我不確定這個改變最近有多近,但是爲了讓你的DTO和Response對象包含在wsdl中,你需要添加一個類似「?includeAllTypes = true」的查詢字符串。

我還使用ServiceStack BasicAuthProvider安裝程序,它會導致AssignRoles和UnAssignRoles自動添加到服務中。這些調用的請求和響應對象仍然無法使其進入wsdl並導致「添加服務引用」失敗。幸運的是,我們沒有使用它們,所以如果我能找到另一個配置設置來刪除它們都應該正常工作。