ASP.NET WebMethod,可在有会话和无会话的情况下使用

ASP.NET WebMethod,可在有会话和无会话的情况下使用,asp.net,session,webmethod,http-status-code-401,unauthorized,Asp.net,Session,Webmethod,Http Status Code 401,Unauthorized,我正在用C#制作一个ASP.NET网页。我发现,如果网页在短时间内处于孤立状态,每当网页试图调用WebMethod时,我就会收到401个未经授权的错误。我认为这可能是由于会话超时造成的 当用户第一次进入这个页面时,当我进行一些后端缓存并使用会话跟踪时,我只在很短的时间内使用会话。此时,页面不断地点击后端进行更新,这将刷新会话。完成后,我不再需要任何会话状态 有没有可能有一个WebMethod不需要会话状态就可以工作,但如果它存在,它能够找到并访问它?或者,如果它在调用WebMethod时自动创建

我正在用C#制作一个ASP.NET网页。我发现,如果网页在短时间内处于孤立状态,每当网页试图调用WebMethod时,我就会收到401个未经授权的错误。我认为这可能是由于会话超时造成的

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

有没有可能有一个WebMethod不需要会话状态就可以工作,但如果它存在,它能够找到并访问它?或者,如果它在调用WebMethod时自动创建了一个空会话,也可以这样做


谢谢

如果我的理解是正确的,您应该将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>

除了@Jupaol给出的ans之外
您可以轻松使用
web配置的
Location
元素 用这样的东西

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


这将从您的web方法中消除身份验证的需要,然后您将能够使用它而不需要任何
auth cookie

mm,因此您希望在不需要身份验证的情况下调用该服务?是的,我只想处理没有会话或会话但其中没有存储任何内容的情况。不幸的是,目前401 Unauthorized错误被抛出到WebMethod中的任何代码之前,因此我根本无法运行任何类型的检查。感谢您的提示。我不知道有允许和拒绝两个选项。虽然那个“?”应该是“*”,我想?