2011-07-07 8 views
1

これはむしろ簡単な質問ですが、私はそれを理解していないようです。 HttpWebRequestを使ってwebRequestを作成し、それをサーバーに送信し、応答を処理する方法を理解しています。以下のようなMicrosoftのASP.NETの例ではASP.NETのリクエストとレスポンスはどこから来たのですか?

protected void Page_Load(object sender, EventArgs e) 
{ 
    StringBuilder sb = new StringBuilder(); 
    // Get cookie from the current request. 
    HttpCookie cookie = Request.Cookies.Get("DateCookieExample"); 

    // Check if cookie exists in the current request. 
    if (cookie == null) 
    { 
     sb.Append("Cookie was not received from the client. "); 
     sb.Append("Creating cookie to add to the response. <br/>"); 
     // Create cookie. 
     cookie = new HttpCookie("DateCookieExample"); 
     // Set value of cookie to current date time. 
     cookie.Value = DateTime.Now.ToString(); 
     // Set cookie to expire in 10 minutes. 
     cookie.Expires = DateTime.Now.AddMinutes(10d); 
     // Insert the cookie in the current HttpResponse. 
     Response.Cookies.Add(cookie); 
    } 
    else 
    { 
     sb.Append("Cookie retrieved from client. <br/>"); 
     sb.Append("Cookie Name: " + cookie.Name + "<br/>"); 
     sb.Append("Cookie Value: " + cookie.Value + "<br/>"); 
     sb.Append("Cookie Expiration Date: " + 
      cookie.Expires.ToString() + "<br/>"); 
    } 
    Label1.Text = sb.ToString(); 
} 

http://msdn.microsoft.com/en-us/library/system.web.httpcookie.aspxから)

リクエストとレスポンスはすでに宣言だけ存在しています。

私は完全なウェブサイトの代わりにWebサービスを開発しています。リクエストとレスポンスが既に定義されているのはなぜですか?

私はなぜこのように多くの問題を抱えているのか分かりません。私はここで同様の質問をしました:How can I use ASP.NET to check if cookies are enabled without having a web page?私は完全に明白な何かが欠けているか、解決しようとしている問題は非常に非標準的です。

ご協力いただきありがとうございます。

編集:私はこのような何かやろうとしている

[WebMethod] 
    public bool CookiesEnabledOnClient() 
    { 
     bool retVal = true; 
     var request = (HttpWebRequest)WebRequest.Create("http://www.dealerbuilt.com"); 
     request.Method = "Head"; 
     var response = (HttpWebResponse)request.GetResponse(); 
     HttpCookie Httpcookie = new HttpCookie("CookieAccess", "true"); 

     response.Cookies.Add(Httpcookie);  
     //If statement checking if cookie exists. 

     return retVal; 
    } 

をしかしCookies.AddがHttpcookieを受け入れないだろうと、私は通常のクッキーを使用する場合、それは追加されません。

答えて

1

ASP.NetではPage_Load()メソッド(およびその他のWebページのメソッド)はクラスのメンバーであり、このクラスはanother classから継承されています。その基本クラスのproperties listにはRequestResponseの両方が含まれています。

質問の後半部分については、Context変数を探してください。 Webサービスでは、リクエストとレスポンスをWebページでどのように利用できるかと同様に定義されており、リクエスト内のCookieを含むこれらのプロパティにアクセスできます。

+0

私はイベントドリブンメソッドを使用していないため、レスポンスまたはリクエストを継承しませんか? –

+0

@Nathan:いいえ。あなたがページから派生したクラスに属していないからです。私はJoelがPage_Loadに言及してこの問題を混乱させたと思う。それを忘れて、あなたのWebページがSystem.Web.UI.Pageから継承することを忘れないでください。 – Chris

+0

私はWebページを使用しません。私はちょうどWebサービスを書いています。それで、私のウェブリクエストを作るために必要な特別なプロトコルはありますか?それはページと同じように動作しますか? –

1

あなたの問題は上記のコードがSystem.Web.UI.Pageから継承しているクラスにあることです。これは、この基本クラスにRequestオブジェクトとResponseオブジェクトを持ち、派生クラスで利用可能です。

標準のWebサービスは、System.Web.Services.WebServiceから継承されます。これには要求と応答が宣言されていません。しかし、それは応答と要求のプロパティを定義するHTTPContextオブジェクトである "Context"プロパティを持っています。

標準的なWebページと比較してサービス内のこれらのオブジェクトにどのような違いがあるのか​​よく分かりませんが、コアの事柄は同じだと思います。 WebServiceクラス自体でそれらを定義しなかった理由はわかりません...

+0

それは私が必要なものです。あなたもありがとう。 –

+0

問題ありません。私は実際にジョエルが自分の答えを更新したことに気づいていなかったが、私が投稿したときにサービスについて少し言及したが、とにかく感謝してうれしい。 :) – Chris

関連する問題