Obsługa błędów protokołu HTTP sieci Web w programie WCF
Obsługa błędów protokołu HTTP sieci Web programu Windows Communication Foundation (WCF) umożliwia zwracanie błędów z internetowych usług HTTP programu WCF, które określają kod stanu HTTP protokołu HTTP i zwracają szczegóły błędu przy użyciu tego samego formatu co operacja (na przykład XML lub JSON).
Obsługa błędów protokołu HTTP sieci Web w programie WCF
Klasa WebFaultException definiuje konstruktor, który umożliwia określenie kodu stanu HTTP. Ten kod stanu jest następnie zwracany do klienta. Ogólna wersja WebFaultException klasy WebFaultException<T> umożliwia zwrócenie typu zdefiniowanego przez użytkownika zawierającego informacje o błędzie, który wystąpił. Ten obiekt niestandardowy jest serializowany przy użyciu formatu określonego przez operację i zwracanego do klienta. W poniższym przykładzie pokazano, jak zwrócić kod stanu HTTP.
public string Operation1()
{
// Operation logic
// ...
throw new WebFaultException(HttpStatusCode.Forbidden);
}
W poniższym przykładzie pokazano, jak zwrócić kod stanu HTTP i dodatkowe informacje w typie zdefiniowanym przez użytkownika. MyErrorDetail
to typ zdefiniowany przez użytkownika, który zawiera dodatkowe informacje o błędzie, który wystąpił.
public string Operation2()
{
// Operation logic
// ...
MyErrorDetail detail = new MyErrorDetail()
{
Message = "Error Message",
ErrorCode = 123,
}
throw new WebFaultException<MyErrorDetail>(detail, HttpStatusCode.Forbidden);
}
Powyższy kod zwraca odpowiedź HTTP z kodem stanu zabronionego i treścią zawierającą wystąpienie MyErrorDetails
obiektu. Format MyErrorDetails
obiektu jest określany przez:
Wartość
ResponseFormat
parametru lub WebInvokeAttribute atrybutu WebGetAttribute określonego w operacji usługi.Wartość AutomaticFormatSelectionEnabled.
Wartość Format właściwości przez uzyskanie dostępu do obiektu OutgoingWebResponseContext.
Aby uzyskać więcej informacji na temat wpływu tych wartości na formatowanie operacji, zobacz WCF Web HTTP Formatting (Formatowanie protokołu HTTP w sieci Web WCF).
WebFaultException jest elementem FaultException i dlatego może służyć jako model programowania wyjątków błędów dla usług, które uwidaczniają punkty końcowe protokołu SOAP, a także internetowe punkty końcowe HTTP.