Я использую WebAPI назвать некоторые методы третьей стороны:Web API Исключение Упаковочный
public class SessionsController : ApiController
{
public DataTable Get(int id)
{
return Services.TryCall(es => es.GetSessionList(id).Tables[0]);
}
}
Я оборачивать все звонки на этой услуги:
internal static class Services
{
internal static IExternalService ExternalService { get; set; }
internal static T TryCall<T>(Func<IExternalService,T> theFunction)
{
try
{
return theFunction(ExternalService);
}
catch (FaultException<MyFaultDetail> e)
{
var message = new HttpResponseMessage(HttpStatusCode.NotImplemented);
message.Content = new StringContent(e.Detail.Message);
throw new HttpResponseException(message);
}
}
}
Когда исключение, его пойман и сообщение подготовлено. С ретрованием я получаю новое сообщение об ошибке:
Обработка запроса HTTP привела к исключению. Подробнее см. Ответ HTTP, возвращенный свойством «Ответ» этого исключения.
Как я могу вернуть это исключение должным образом, без жалобы Visual Studio? Когда я пропускаю ошибку, браузер получает результат ошибки 501. Метод Request.CreateResponse()
недоступен в моем методе обертки.
'Request.CreateResponse()' недоступен? Вы можете сделать это доступным, не так ли? –
Afaik методы расширения наследуются из базового класса ApiController. Так что это не в моем классе Services ... –
Передайте объект 'Request' в метод' TryCall'? – DavidG