gpt4 book ai didi

c# - Asp.net 随机停止遵守表单例份验证白名单

转载 作者:可可西里 更新时间:2023-11-01 03:11:18 27 4
gpt4 key购买 nike

问题

上个月,我们将我们的 asp.net 网站场从 Server 2008 R2 迁移到 Server 2012 R2,并升级到 asp.net 4.5。我们正在使用 cookie 表单例份验证来防止未经授权访问网站。

<authorization>
<deny users="?" />
<allow users="*" />
</authorization>

我们有一些在 web.config 中列入白名单的 Assets 和页面(例如:登录页面):

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

在过去的几个月里,我们一直注意到 IIS/Asp.net 随机地停止遵守白名单并假设所有内容都需要经过身份验证。该服务器上对该站点的所有请求都将被重定向到登录页面,然后该页面会抛出 500 错误。无法检索任何列入白名单的 Assets 。

当 IIS 出现问题时,我们可以在事件查看器中看到 2 个错误。第一个:

Exception type: NullReferenceException 
Exception message: Object reference not set to an instance of an object.
at System.Web.PipelineModuleStepContainer.GetNextEvent(RequestNotification notification, Boolean isPostEvent, Int32 eventIndex)
at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error)
at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb)
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)

第二个不会一直出现:

Event code: 4005 
Event message: Forms authentication failed for the request. Reason: The ticket supplied has expired.

iis 进程将工作数小时,然后突然开始做这种奇怪的事情。一旦我们回收应用程序池,甚至只是修改 web.config,网站就会重新开始工作。

我们尝试过的事情

老实说,我们很困惑。这在我们的旧服务器上没有发生,但从那时起我们对我们的站点进行了相当多的更改,但与身份验证无关。

  1. 我们在一个 webfarm 中,我们在 web.config 中定义了我们的机器 key 。

    <machineKey validationKey="XXX" decryptionKey="XXX" validation="SHA1" decryption="AES" />
  2. 我们的目标是 asp.net 4.5

    <httpRuntime targetFramework="4.5" executionTimeout="120" maxQueryStringLength="4096"  minFreeThreads="72" minLocalRequestFreeThreads="88"  maxRequestLength="32768" />
  3. 我们在 IIS 中重新创建了应用程序池。

  4. 不确定这是否重要,但我们使用 IIS 共享配置和共享证书。
  5. 问题出现在服务器场中的所有网络服务器上,而不仅仅是一台。
  6. 我们昨天在其中一台服务器上重新安装了操作系统……所以我们看看是否能解决任何问题。
  7. 它似乎与内存使用无关。有时 iis 只使用 4gb,有时 6gb。
  8. 它似乎与我们可以判断的特定页面执行无关。
  9. 我已经针对内存转储运行了调试诊断,没有任何线程运行时间过长,也没有疯狂的内存使用。

是的,我们被难住了。任何帮助表示赞赏。

最佳答案

我有过类似的经历,更改 IIS 以允许匿名身份验证为我解决了这个问题。对于您的情况,我会推荐两件事:

  1. 尝试在 IIS 中启用匿名身份验证(访问 http://technet.microsoft.com/en-us/library/cc770966%28v=ws.10%29.aspx 了解如何操作)
  2. 如下所示修改您的代码
<location path="signin">
<system.web>
<authorization>
<allow users="?" />
<allow users="*" />
</authorization>
</system.web>
</location>

希望对你有帮助

关于c# - Asp.net 随机停止遵守表单例份验证白名单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22967340/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com