[英]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.