0

我在视觉工作室建立一个网站。一开始一切都很好,我设法在所有网页之间导航。我按照本教程(http://csharpdotnetfreak.blogspot.com/2011/12/createuserwizard-email-verification.html)创建了一个登录页面。

我设法将验证电子邮件发送到我的电子邮件地址,但链接始终无效,我总是收到错误 400 - 错误请求。

我的问题是现在,我无法访问任何网页。它总是将我带到 login.aspx 页面,即使我在 web.config 文件上设置了不同的页面(在身份验证下)。我尝试将其他页面设置为起始页面(通过右键单击项目资源管理器)。

每次我尝试打开网页时都会收到错误 404,并且地址栏中的地址更改为 localhost49171/login.aspx?Returnur%2fdefault.aspx%3f

有人有解决方案吗?

提前致谢,

里龙

4

2 回答 2

0

returnurl 表明 IIS 正在尝试加载 default.aspx,但网站安全设置需要登录。因此,您将被重定向到 login.aspx。

于 2012-08-02T00:02:10.107 回答
0

在检查您的 web.config 之后,您所描述的行为是我所期望的,只要在登录后您就可以导航和访问您网站中的所有页面。如果登录后,您仍然被重定向到登录页面,则说明您的其他设置有误。

web.config 中的 configuration/web.config/authorization 元素用于指定站点范围的授权规则。

<configuration>
  <web.config>
    <authorization>
      <deny users="?"  /> <!-- deny un-authenticated access, everyone not logged in that is -->
      <allow users="*"   /> <!-- allow everyone else -->
    </authorization>
  </web.config>
</configuration>

如果您有任何人可能需要访问的资源,您可以使用 configuration/location/system.web/authorization 元素修改对该资源的授权规则

<configuration>
  <location path="SomeUnprotectedResource.aspx">
    <authorization>
      <allow users="*" /> <!-- anyone can view this page -->
    </authorization>
  </location>
</configuration>

与站点范围的规则相比,您甚至可能拥有进一步限制对页面的访问所需的资源。

<configuration>
  <location path="OnlyForMe.aspx">
    <authorization>
      <allow users="Me" /> <!-- only the user Me can view this page -->
      <deny users="*" /> <!-- deny everyone else -->
    </authorization>
  </location>
</configuration>

附带说明一下,如果您有 IIS 设置来保护所有网站资源(即 *.css、*.js)而不仅仅是 ASP.NET 资源,您还需要添加规则以允许访问它们。例如,您的 JavaScript 和样式可能在登录页面之外,因此它们可能需要样式和脚本才能工作。

<configuration>
  <location path="styles/login.css">
    <authorization>
      <allow users="*" />
    </authorization>
  </location>
  <location path="scripts/login.js">
    <authorization>
      <allow users="*" />
    </authorization>
  </location>
</configuration>
于 2012-08-06T19:46:07.393 回答