繁体   English   中英

.aspx(隐藏代码)中的ws试图设置cookie,但是不能吗?

[英]w-s in .aspx (code-behind) tries to set cookie but can't?

我在.aspx( 而不是 .aspx.cs)中实现了一个Web服务'AHandyWebService'。

我正在尝试在调用Web服务时在客户端上设置cookie。

我不确定这在本质上是不可能的,还是与我的工作方式有关。

因为实现ws的方法是静态的,所以我不得不实现一个本地的'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;

}

顺便说一句,这里没有跨域问题-ws与服务于ws消费页面的域相同。

欢迎提出建议/意见。

好的,这有点尴尬。 经过很多尝试,我发现支持ws的方法实际上并不是我认为的方法! ...因此不提供Cookie!

同时,在其他新闻中,我遇到了这个StackOverflow问题 ,在我看来,这提供了一种更合理的方法来解决从静态方法访问Response对象的问题,因此我已经实现了它,并且现在可以正常工作了。

如果有一定用途,这里是现在可以使用的方法的副本:

[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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM