.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消费页面的域相同。
欢迎提出建议/意见
好吧,这有点尴尬。在尝试了很多不同的东西之后,我发现支持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;
}