我試圖在IE中使用IErrorHandler接口實現WCF中的自定義錯誤處理。我想將未處理的異常翻譯成自定義錯誤,這是我在XSD中獲得的結構。WCF - 使用自定義錯誤消息替換故障SOAP消息的故障節點
我的代碼如下所示:
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
if (!(error is FaultException))
{
var customFault = new MyCustomFault
{
FaultString = "Something gone wrong",
Detail = new DetailType
{
GeneralFault = new GeneralFaultType
{
Errors = new[]
{
new ErrorType
{
Code = "333"
}
}
}
}
};
var faultException = new FaultException<MyCustomFault>(customFault);
var msgFault = faultException.CreateMessageFault();
fault = Message.CreateMessage(version, msgFault, faultException.Action);
}
}
但這個代碼將產生輸出SOAP消息
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<s:Fault>
<faultcode>s:Client</faultcode>
<faultstring xml:lang="cs-CZ">The creator of this fault did not specify a Reason.</faultstring>
<detail>
... MyCustomFault goes here...
</detail>
</s:Fault>
</s:Body>
</s:Envelope>
我能夠影響故障的唯一細節元素。我想實現,而不是來自namespece「http://schemas.xmlsoap.org/soap/envelope/」的故障元素將成爲我的自定義故障對象。這甚至可能嗎?我正在使用XmlSerializer。
謝謝 米哈爾