Webmethod没有点击Angular2,导致整个页面的HTML

时间:2016-11-24 07:46:41

标签: c# asp.net angular typescript webmethod

我有一个简单的WebMethod,如下所示

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

并将其称为

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")
        );

但调试器没有击中。

在控制台上我可以看到Done1111111111。 在开发者工具的网络标签中,我可以看到此请求的状态为200,即OK

那么为什么WebMethod没有被调用?

修改

刚才知道响应是整个html页面。我可以在控制台中看到它。

1 个答案:

答案 0 :(得分:0)

好的,我设法解决了这个问题。因为它返回整个页面html,我只是将内容类型作为json添加到请求标题中,如下所示。

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")
);

还更改了WebMethod以接受GET

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