ASP.NET контроль входа в систему угоняет мой 404 - PullRequest
0 голосов
/ 31 августа 2010

Я реализовал стандартный элемент управления Login, и все работает нормально.

Однако, когда я ввожу недопустимый URL-адрес, он перенаправляется на страницу входа.

например

mywebsite.com / xxx правильно выдает 404

, но

mywebsite.com / xxx.aspx вызывает перенаправление на страницу входа

Я использую ASP.NET 3.5 в WindowsServer 2008.

Я настроил web.config со следующим

, а также

<httpErrors existingResponse="Replace">
<remove statusCode="403" />
<remove statusCode="404" />
<remove statusCode="500" />
<error statusCode="403" path="/xyz/NoAccess.htm" responseMode="Redirect" />
<error statusCode="404" path="/xyz/FileNotFound.htm" responseMode="Redirect" />
<error statusCode="500" path="/xyz/FileNotFound.htm" responseMode="Redirect" />
</httpErrors>

Аутентификация через веб-формы

<authentication mode="Forms">
<forms loginUrl="Login.aspx" defaultUrl="~/External/SomeView.aspx"></forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>

Таким образом, кажется, что страница входа в систему угоняет мои 404. Как мне заставить http://www.mywebsite.com/xxx.aspx вернуть 404 вместо перенаправления на страницу входа?

Ответы [ 2 ]

4 голосов
/ 31 августа 2010

Я думаю, вам нужно сделать вашу страницу 404 доступной для всех пользователей - попробуйте добавить это в ваш web.config:

<location path="/xyz/FileNotFound.htm">
    <system.web>
      <authorization>
          <allow users="*"/>
      </authorization>
    </system.web>
</location>
0 голосов
/ 31 августа 2010

Нет, страница входа не угоняет результат 404 - но вы возвращаете 403, на котором вы сказали модулю аутентификации перенаправить на страницу входа.

Я недостаточно знаю о внутренней работе раздела конфигурации ошибок в web.config, но попробуйте изменить порядок:

  <!-- Notice that the 404 rule is before the 403 rule -->
  <error statusCode="404" path="/xyz/FileNotFound.htm" responseMode="Redirect" />
  <error statusCode="403" path="/xyz/NoAccess.htm" responseMode="Redirect" />
  <error statusCode="500" path="/xyz/FileNotFound.htm" responseMode="Redirect" />

Если это не сработает, измените правила доступа, чтобы разрешить доступ к xxx.aspx, удалив

<deny users="?" />

, поскольку для этого требуется, чтобы все пользователи выполнили вход, прежде чем они смогут получить доступ к чему-либо. (? соответствует любому анонимному пользователю, который не вошел в систему, пользователь ...)

...