2012-04-01 21 views
0

タイトルにはすべてが記載されていますが、必要な特定のシナリオをお知らせします。System.Web.UI.Pageを拡張しないクラスからSystem.Web.HttpResponseを取得します。

アプリケーションでは、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 ""; 
     } 
    } 
} 

どうすればこの問題を解決できますか?

答えて

2

Response.Redirectは、302 Http Responseを作成します。これは、ブラウザでは、その新しい場所にユーザーをリダイレクトする必要があることを意味します。

JavaScriptがコールされてから、JavaScriptはレスポンスを解釈し、ブラウザに新しい場所をロードするように指示する必要があります。

は、私が今考えている最も簡単な方法は、新しい場所を返すためにログアウト()メソッドで、JavaScriptは、あなたがのHttpContextクラスからのレスポンスにアクセスできるWebサービスからwindow.locationプロパティ

window.location = msg.d; 

を設定します(HttpContext.Current.Response.Redirect())、それは必要ありません。実際には、Webサービスは通常のもの(SOAPなど)以外のレスポンスを書くべきではないと思います。

2
HttpContext.Current.Response 

これは静的なプロパティです。

関連する問題