虽然标题说明了一切,但我想让你知道我需要的特殊情况。
在应用程序中,我想通过调用JavaScript方法注销用户。这个方法依次调用WebMethod:
namespace EMSApplication.Web.WebServices {
/// <summary>
/// Holds the Webservice methods of EMSApplication
/// </summary>
[WebService(Namespace = "http://ems-app.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class EMSWebService : System.Web.Services.WebService {
[WebMethod]
public string Logout() {
if (User.Identity.IsAuthenticated) {
System.Diagnostics.Debug.WriteLine(" ==JYM00000000000000000000000000000");
FormsAuthentication.SignOut();
Response.Redirect("~/default.aspx");
}
return "";
}
}
}
我该如何解决这个问题?
答案 0 :(得分:2)
HttpContext.Current.Response
这是一个静态属性。
答案 1 :(得分:2)
Response.Redirect将创建一个302 Http Response,对于浏览器意味着它需要将用户重定向到该新位置。
由于现在通过javascript调用,JavaScript需要解释响应并指示浏览器加载新位置。
我现在想的最简单的方法是返回新位置的Logout()方法,JavaScript将设置window.location属性
window.location = msg.d;
从WebService,您可以从HttpContext类(HttpContext.Current.Response.Redirect()
)访问Response,但您不需要它。实际上我不认为web服务应该写出比通常的更多的响应(SOAP等)。