질문은 IHasResponseStatus
및 public ResponseStatus ResponseStatus { get; set; }
속성을 사용할 때 하나의 네임 스페이스를 사용하여 ResponseStatus
에 접두사 d2p1을 제거하는 방법입니다.ResponseStatus xmlns d2p1
모든 웹 서비스 모델에 단일 네임 스페이스 http://schemas.tagway.com.ua/types
을 사용합니다. ResponseStatus 노드를 제외하고 응답은 ServiceStack : ResponseStatus에 대해 자체 네임 스페이스 xmlns:d2p1="http://schemas.servicestack.net/types"
을 자동으로 추가하기 때문에 노드를 제외하고는 훌륭하게 보입니다.
서비스 모델 : 프로젝트 NTPCore.ServiceModel에서
namespace NTPCore.ServiceModel.Operations.Balance
{
public class Balance
{
public Auth auth { get; set; }
}
public class BalanceResponse : IHasResponseStatus
{
public ResponseStatus ResponseStatus { get; set; }
public int balance { get; set; }
public int limit { get; set; }
}
}
의 AssemblyInfo.cs :
[assembly: ContractNamespace("http://schemas.tagway.com.ua/types", ClrNamespace = "NTPCore.ServiceModel.Operations.Balance")]
[assembly: ContractNamespace("http://schemas.tagway.com.ua/types", ClrNamespace = "ServiceStack.ServiceInterface.ServiceModel")] //may be this not need...experimenting, nothing happance for me
예 응답 :
<BalanceResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.tagway.com.ua/types">
<ResponseStatus xmlns:d2p1="http://schemas.servicestack.net/types">
<d2p1:ErrorCode>String</d2p1:ErrorCode>
<d2p1:Errors>
<d2p1:ResponseError>
<d2p1:ErrorCode>String</d2p1:ErrorCode>
<d2p1:FieldName>String</d2p1:FieldName>
<d2p1:Message>String</d2p1:Message>
</d2p1:ResponseError>
</d2p1:Errors>
<d2p1:Message>String</d2p1:Message>
<d2p1:StackTrace>String</d2p1:StackTrace>
</ResponseStatus>
<balance>0</balance>
<limit>0</limit>
</BalanceResponse>
빠른 응답을 보내 주셔서 감사합니다! 그러나 [DataContract] 및 [DataMember] 상황을 추가 한 후에는 상황이 동일합니다. 나는 이것을 시도한다 : [DataContract (Namespace = "http://schemas.tagway.com.ua/types")]하지만 여전히 아무것도 바뀌지 않는다 ... – Inprimex
정적 인 ServiceStack의 ResponseStatus 네임 스페이스는 변경할 수 없다. 예쁜 XML을 원하면'http : // schemas.servicestack.net/types' 네임 스페이스를 사용해야합니다. – mythz
mmm이지만 IService를 사용하고 전역 오류 처리를 구현하여 예쁜 XML에 대한 계획을 구현할 수 있습니까? – Inprimex