2013-07-03 6 views
0

J'ai un service WCF de base:Catch erreur JSON désérialisation en service WCF

[OperationContract] 
[WebInvoke(Method = "POST", 
    ResponseFormat = WebMessageFormat.Json, 
    RequestFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Bare, 
    UriTemplate = "object/{id}")] 
void MyMethod(String id, MyType myObject); 

Quand j'appelle ce service avec des données JSON valides, il fonctionne comme prévu. Et quand je l'appelle avec des données JSON invalides, j'obtiens une erreur de requête, ce qui est également attendu. Toutefois, cette erreur contient une trace de pile et un message générique.

Ma question est comment puis-je attraper cette erreur et retourner mon propre message ou page html?

Répondre

1

Vous pouvez utiliser <customErrors /> sur la section <system.web> de web.config et/ou vous pouvez utiliser l'événement Application_Error sur Global.asax:

protected void Application_Error(object sender, EventArgs e) 
{ 
     // Your error handling stuff 
     System.Web.HttpContext context = HttpContext.Current; 
     System.Exception ex = context.Server.GetLastError(); 

     context.Server.ClearError(); 

     Response.Redirect("CustomError.aspx"); 
} 
+0

Je n'ai pas Global.asax dans mon projet. J'ai essayé de l'ajouter, mais il n'est jamais appelé. J'ai également essayé la solution '', mais elle ne redirige jamais vers la nouvelle page. – RatTub

+0

Comment hébergez-vous votre service? IIS? Auto-hébergé? –

+0

Oui, l'hébergement avec IIS. – RatTub