ASP.NET WebMethod既可以使用Session,也可以不使用Session

时间:2012-07-19 03:56:42

标签: asp.net session webmethod http-status-code-401 unauthorized

我正在用C#制作一个ASP.NET网页。我发现如果网页在短时间内单独存在,每当页面尝试调用WebMethod时,我就会开始获得401 Unauthorized Errors。我认为这可能是由于会话超时造成的。

我只在用户第一次进入此页面时使用Session,当我正在进行一些后端缓存并使用Session来跟踪时。那时页面不断地在后端进行更新,这将刷新会话。一旦完成,我不再需要任何会话状态。

是否可以使WebMethod在不需要会话状态的情况下工作,但如果存在会话状态,它是否能够找到并访问它?或者,如果在调用WebMethod时它自动创建了一个空会话,这也没关系。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果我的理解是正确的,您应该将Web服务放在子文件夹中并将其配置为允许匿名用户:

您的典型root web.config如下所示:

<authentication mode="Forms">
  <forms loginUrl="~/Account/Login.aspx" timeout="2880">
  </forms>
</authentication>
<authorization>
  <deny users="*"/>
</authorization>

在子文件夹中,创建一个新的web.config文件并覆盖授权设置:

<?xml version="1.0"?>
<configuration>
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
</configuration>

答案 1 :(得分:1)

除了由@Jupaol给出的答案 您可以轻松使用Location的{​​{1}}元素 用这样的东西

web config

这将从您的网络方法中删除验证的需要,然后您就可以使用它而无需任何<configuration> <location path="Url_To_WebMethod"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> </configuration>