Als er iets misgaat in een WCF REST-aanroep, zoals de gevraagde bron is niet gevonden, hoe kan ik dan spelen met de HTTP-responscode (bijvoorbeeld door deze in te stellen op HTTP 404) in mijn OperationContract-methode?
p>
Antwoord 1, autoriteit 100%
Er is een WebOperationContext
waartoe u toegang hebt en het heeft een OutgoingResponse
eigenschap van het type OutgoingWebResponseContext
met een StatusCode
eigenschap die kan worden ingesteld.
WebOperationContext ctx = WebOperationContext.Current;
ctx.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.OK;
Antwoord 2, autoriteit 65%
Als u een hoofdtekst met reden wilt retourneren, kijk dan eens op WebFaultException
Bijvoorbeeld
throw new WebFaultException<string>("Bar wasn't Foo'd", HttpStatusCode.BadRequest );
Antwoord 3, autoriteit 20%
Voor 404 is er een ingebouwde methode op de WebOperationContext.Current.OutgoingResponsegenaamd SetStatusAsNotFound(string message)die de statuscode instelt op 404 en een statusbeschrijving met één telefoontje.
Let op: SetStatusAsCreated(Uri location)waarmee de statuscode met één aanroep wordt ingesteld op 201 en locatieheader.
Antwoord 4, autoriteit 3%
Je kunt ook een statuscode en de hoofdtekst van de reden retourneren met WebOperationContext‘s StatusCodeen Statusbeschrijving:
WebOperationContext context = WebOperationContext.Current;
context.OutgoingResponse.StatusCode = HttpStatusCode.OK;
context.OutgoingResponse.StatusDescription = "Your Message";
Antwoord 5, autoriteit 2%
Als u de statusbeschrijving in de koptekst wilt zien, moet de REST-methode ervoor zorgen dat u null retourneert vanuit de sectie Catch() zoals hieronder:
catch (ArgumentException ex)
{
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.InternalServerError;
WebOperationContext.Current.OutgoingResponse.StatusDescription = ex.Message;
return null;
}
Antwoord 6
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized;
throw new WebException("令牌码不正确", new InvalidTokenException());
Antwoord 7
Dit werkte niet voor mij voor WCF Data Services. In plaats daarvan kunt u DataServiceException gebruiken in het geval van Data Services. Vond het volgende bericht nuttig.
http://social.msdn.microsoft .com/Forums/en/adodotnetdataservices/thread/f0cbab98-fcd7-4248-af81-5f74b019d8de