2016-11-24 3 views
1

toute la page J'ai un WebMethod simple ci-dessousWEBMETHOD ne touche pas Angular2, résultat html

[WebMethod(EnableSession=true)] 
public static string Redirect() 
{ 
    object a= HttpContext.Current.Session; 
    return "yeppieee"; 
} 

et de l'appeler comme

this.http.get(`http://localhost/MyApp/Pages/TestPage.aspx/Redirect`) 
     .map(res=>res)  
     .subscribe((res) =>{     
       console.log(res);         
       }, 
       (err)=>console.log(err), 
       ()=>console.log("Done1111111111") 
     ); 

Mais débogueur ne frappe pas.

Sur la console, je peux voir Done1111111111. Dans l'onglet réseau de l'outil de développement, je peux voir le statut de cette demande est 200, c'est-à-dire OK.

Alors pourquoi WebMethod ne s'appelle pas?

Modifier

vient de savoir que la réponse est toute la page html. Je peux le voir dans la console.

+0

mis la demande pst à ce webserice. utilisez $ http.Post –

+0

@SURJEETSINGHBisht Je ne poste rien. – Imad

Répondre

0

OK, j'ai réussi à résoudre ce problème. Comme il renvoyait la page entière html, j'ai simplement ajouté le type de contenu comme json à l'en-tête de la requête comme ci-dessous.

let headers = new Headers({ 'Content-Type': 'application/json' }); 
let options = new RequestOptions({ headers: headers }); 
this.http.get(`http://localhost/HelixWebApp/Pages/AngularContainer.aspx/Redirect`, options) 
    .map(res=>res.json())  
    .subscribe((res) =>{     
     console.log(res);         
     }, 
     (err)=>console.log(err), 
     ()=>console.log("Done") 
); 

également changé WebMethod accepter GET

[WebMethod(EnableSession=true)] 
[ScriptMethod(UseHttpGet = true)] 
public static string Redirect() 
{ 
    object a= HttpContext.Current.Session; 
    return "yeppieee"; 
}