.aspx中的W-s(代码隐藏)尝试设置cookie,但不能'

本文关键字:cookie 设置 但不能 W-s 中的 代码 隐藏 aspx | 更新日期: 2023-09-27 18:16:30

我有一个web服务,'AHandyWebService'在。aspx中实现(不是在。aspx.cs中)。

当web服务被调用时,我正在尝试在客户端设置cookie。

我不确定这是本质上不可能的,还是与我做这件事的方式有关。

因为实现w-s的方法是静态的,我不得不实现'page'的本地实例,我不确定它应该是。

方法如下:

[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json, XmlSerializeString = false)]
public static SomeObj AHandyWebService()
{
    SomeObj mySomeObj;
    try
    {
        mySomeObj = getSomeObj();
        System.Web.UI.Page p = new Page();
        HttpCookie appCookie = new HttpCookie("FOOAPP");
        appCookie.Value = String.Format("Written: {0:yyyy-MM-dd}", System.DateTime.Now.ToUniversalTime());
        appCookie.Expires = System.DateTime.Now.ToUniversalTime().AddMinutes(1);
        appCookie.Path = "/FOO";
        p.Response.Cookies.Add(appCookie);
    }
    catch (Exception ex)
    {
        throw;
    }
    return mySomeObj;
}

顺便说一下,这里没有跨域问题-提供w-s的域与提供w-s消费页面的域相同。

欢迎提出建议/意见

.aspx中的W-s(代码隐藏)尝试设置cookie,但不能'

好吧,这有点尴尬。在尝试了很多不同的东西之后,我发现支持w-s的方法实际上并不是我所认为的方法!... 因此没有饼干供应!

与此同时,在其他新闻中,我遇到了这个StackOverflow问题,它提供了一个更合理的方法来绕过从静态方法访问响应对象,所以我已经实现了它,现在它应该工作。

如果它有一些用途,这里有一个现在工作方法的副本:

[WebMethod]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json, XmlSerializeString = false)]
public static SomeObj AHandyWebService()
{
    SomeObj mySomeObj;
    try
    {
        mySomeObj = getSomeObj();
        HttpCookie appCookie = new HttpCookie("FOOAPP");
        appCookie.Value = String.Format("Written: {0:yyyy-MM-dd}", System.DateTime.Now.ToUniversalTime());
        appCookie.Expires = System.DateTime.Now.ToUniversalTime().AddMinutes(1);
        appCookie.Path = HttpContext.Current.Request.ApplicationPath;
        HttpContext.Current.Response.Cookies.Add(appCookie);
    }
    catch (Exception ex)
    {
        throw;
    }
    return mySomeObj;
}