0

我正在用 C# 制作一个 ASP.NET 网页。我发现如果网页在短时间内被单独放置,每当页面尝试调用 WebMethod 时,我就会开始收到 401 未经授权的错误。我认为这可能是由会话超时引起的。

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

是否有可能拥有一个无需会话状态即可工作的 WebMethod,但如果它存在,它能够找到并访问它吗?或者,如果它在调用 WebMethod 时自动创建了一个空会话,这也可以。

谢谢!

4

2 回答 2

1

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

您的典型根 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>
于 2012-07-19T05:58:23.927 回答
1

除了@Jupaol 给出的 ans 之外,
您还可以轻松地使用Locationelement ofweb config 像这样的东西

<configuration>
   <location path="Url_To_WebMethod">
      <system.web>
         <authorization>
            <allow users="*"/>
         </authorization>
      </system.web>
   </location>
</configuration>

这将从您的网络方法中消除对身份验证的需要,然后您就可以使用它而无需任何auth cookie

于 2012-07-19T06:03:22.273 回答