首页 > 解决方案 > C# ASP 出于某种原因重定向到 ~/Account/Login - 当用户通过身份验证时

问题描述

我最近将我的 C# asp 项目从框架 v4.5 更新到 v4.8,并且还更新了引用的 nuget 包。这是一个 webdav 项目,让用户使用 webdav 样式浏览我们的 sql DB。在更新之前,一切都很好,就像一个魅力。

现在我可以看到使用 ntlm auth 访问 Web 项目时出现 401 未经授权的错误。出于某种原因,某些东西将我重定向到 ~/Account/Login 页面 - 在 IIS 端,Basic 和 Windows 身份验证仅被启用(表单和匿名被禁用)。

我尝试使用 curl 访问网络。使用 BASIC auth 它工作,但使用 ntlm 它没有 - 得到 401 和一个小的 html 正文,消息以开头

对象移动

在我的网络配置中(有趣的部分)如下:

  <system.web>
    <customErrors mode="Off" />
    <compilation debug="true" targetFramework="4.8" />
    <httpRuntime targetFramework="4.8" maxUrlLength="8192" maxQueryStringLength="2048" />
    <authentication mode="Windows" />
  </system.web>
  <system.webServer>
    <security>
      <requestFiltering>
        <hiddenSegments>
          <remove segment="Bin" />
        </hiddenSegments>
      </requestFiltering>
    </security>
    <httpErrors errorMode="Detailed" />
    <modules>
      <remove name="WebDAVModule" />
    </modules>
    <handlers>
      <remove name="WebDAV" />
      <add verb="*" path="*" name="WebDavHandler" type="WebDavHandler" />
    </handlers>
    <caching enabled="false" enableKernelCache="false" />
  </system.webServer>

在公共 void ProcessRequest(HttpContext context) 方法的 WebDavHandler.cs 文件中,我在请求“IsAuthenticated = true”的“上下文”中看到,在 LogonUserIdentity 中我看到它是 NTML 身份验证,我可以看到用户登录名和所有,但 context.Request.Path 已经设置为 Account/Login。

我找不到任何原因,哪个层或设置是这种行为的原因。有人可以帮我在哪里找到根本原因吗?

提前致谢!

标签: c#authenticationiismodel-view-controllerntlm-authentication

解决方案


推荐阅读