我正在用C#制作一个ASP.NET网页。我发现如果网页在短时间内单独存在,每当页面尝试调用WebMethod时,我就会开始获得401 Unauthorized Errors。我认为这可能是由于会话超时造成的。
我只在用户第一次进入此页面时使用Session,当我正在进行一些后端缓存并使用Session来跟踪时。那时页面不断地在后端进行更新,这将刷新会话。一旦完成,我不再需要任何会话状态。
是否可以使WebMethod在不需要会话状态的情况下工作,但如果存在会话状态,它是否能够找到并访问它?或者,如果在调用WebMethod时它自动创建了一个空会话,这也没关系。
谢谢!
答案 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>