C# 我正在从javascript调用一个ASMX web服务,它阻止了我的会话超时
编辑2: 我有一个后台进程根据时间表或最终用户的请求在服务器端运行,我需要向所有用户显示一个映像,以通知他该进程正在运行,或者在进程完成时取出映像 编辑2已完成 我正在调用一个ASMX web服务,它位于我的网站中,通过javascript托管在我的IIS上,它阻止了我的会话超时 为什么客户端对Web服务的调用会阻止我的网站上的会话超时 有什么办法可以预防吗 请告诉我,如果你需要我的问题更清楚或更多的细节 编辑1: 基于以下答案中@Rene147提供的信息和数据,以及一些谷歌搜索,我在我的Web服务上尝试了以下内容:C# 我正在从javascript调用一个ASMX web服务,它阻止了我的会话超时,c#,javascript,asp.net,web-services,session,C#,Javascript,Asp.net,Web Services,Session,编辑2: 我有一个后台进程根据时间表或最终用户的请求在服务器端运行,我需要向所有用户显示一个映像,以通知他该进程正在运行,或者在进程完成时取出映像 编辑2已完成 我正在调用一个ASMX web服务,它位于我的网站中,通过javascript托管在我的IIS上,它阻止了我的会话超时 为什么客户端对Web服务的调用会阻止我的网站上的会话超时 有什么办法可以预防吗 请告诉我,如果你需要我的问题更清楚或更多的细节 编辑1: 基于以下答案中@Rene147提供的信息和数据,以及一些谷歌搜索,我在我的Web
[WebMethod(EnableSession=false)]
public string GetSummary()
{
HttpContext.Current.Response.Cookies.Remove(System.Web.Security.FormsAuthentication.FormsCookieName);
return "something";
}
但事实证明,HttpContext.Current.Response.Cookies
总是空的
任何提示?默认情况下,表单身份验证使用滑动过期。这意味着每次您向服务器发出请求时,您的cookie过期时间都会重置(有一些警告) 要禁用滑动过期,请将web.config中的“slidingExpiration”设置为false。取自
根据我对你上次编辑的理解-如果你想读取cookie的值,你需要使用Context.Request.Cookies而不是Response
[WebMethod(EnableSession = false)]
public string GetSummary()
{
HttpCookie decryptedCookie =
Context.Request.Cookies[FormsAuthentication.FormsCookieName];
return "something";
}
在应用程序中,根本不设置此属性。但是如果将此属性设置为false,这将如何影响应用程序的行为以及最终用户与页面之间的交互?默认情况下,slidingExpiration设置为“True”。因为即使用户正在与网站交互,过期时间也不会再滑动。一旦超时(我认为默认超时时间为30分钟)过期,他们将注销网站。但我不希望这适用于我的网站,有没有办法对我的ASMX web服务进行ajax调用而不影响会话超时,但也不会影响用户与网站交互的超时策略。我不知道。您的用户在AJAX调用中获取/发布到您的服务器,就像在普通回发中一样。无论请求是如何发出的,cookie都将继续更新。您“可以”实现自己的auth提供者,该提供者考虑了AJAX,但这并不简单。或者,如果您使用MVC,您可能可以通过某种过滤器实现这一点?我使用的是asp.net webforms。您是否有一个如何开始实现我自己的身份验证提供程序的示例?或者,您有什么建议可以让我在不影响会话超时的情况下从客户端轮询服务器吗?我的请求中没有cookie,也没有请求的名称。我希望,通过禁止服务器从我的web服务发回FormsAuthenticationCookie,我可以找到解决问题的方法。您有什么想法吗?
[WebMethod(EnableSession = false)]
public string GetSummary()
{
HttpCookie decryptedCookie =
Context.Request.Cookies[FormsAuthentication.FormsCookieName];
return "something";
}