Я настраиваю службу REST WCF через код, и что-то не так. Я создаю обработчик ошибок с кодом, как показано ниже.WCF 3.5 добавление IErrorHandler не вызвано
Когда я запускаю наш сервис (самообслуживаемый), код ProvideFault попадает, когда я бросаю исключение WebFaultException с неавторизованным кодом состояния. Проблема в том, что клиент (browswer) получает «Сервер обнаружил ошибку при обработке запроса. Подробнее см. В журналах сервера». Любая идея, что мне не хватает? Кроме того, поскольку я сам занимаюсь хостингом, нет «журналов сервера», поэтому в основном я полностью в темноте. Нужно ли вообще записывать «серверные журналы» в самообслуживаемую службу?
ПРИМЕЧАНИЕ. Исключение WebFaultException - это тот, который мы написали с тех пор, как мы используем 3.5.
public class WebErrorHandler : IErrorHandler
{
private IErrorHandler m_chainedHandler;
public WebErrorHandler(IErrorHandler chainedHandler)
{
m_chainedHandler = chainedHandler;
}
#region IErrorHandler Members
public bool HandleError(Exception error)
{
return m_chainedHandler.HandleError(error);
}
public void ProvideFault(Exception error, System.ServiceModel.Channels.MessageVersion version, ref System.ServiceModel.Channels.Message fault)
{
WebFaultException ex = error as WebFaultException;
if (ex != null)
{
fault = Message.CreateMessage(version, "");
HttpResponseMessageProperty p = new HttpResponseMessageProperty();
p.StatusCode = ex.Status;
p.StatusDescription = "Another test";
fault.Properties.Add(HttpResponseMessageProperty.Name, p);
}
else
{
m_chainedHandler.ProvideFault(error, version, ref fault);
}
}
#endregion
}
Я изменил код в HandleError, чтобы вернуть true без каких-либо изменений в результате. Я думал, что HandleError будет вызван впоследствии в любом случае. В любом случае, похоже, что служба игнорирует ошибку, которую я создаю в обработчике. – bpeikes