请求的URL授权失败

时间:2009-05-27 06:57:29

标签: asp.net iis-6

我正在将一些网站迁移到运行IIS6的新Windows 2003安装。但是我遇到了表单身份验证的问题。有问题的网站在旧的盒子上运行正常,这是相同的操作系统和IIS版本。

当我尝试登录网站时,我收到一条事件日志“请求的URL授权失败”,页面重定向回: -

http://www.demo.socialclause.net/logout.aspx?ReturnUrl=/Secure/Procurement/Default.aspx

旧服务器和新服务器都包含相同的设置和相同的权限。显然我错过了某个地方但却无法理解它。有人可以帮忙吗?

我的web.config包含: -

<authentication mode="Forms">
  <forms slidingExpiration="true" name=".ASPXAUTH" protection="All" loginUrl="~/logout.aspx" timeout="60" ></forms>
</authentication>

并且在/ secure目录(这不是虚拟目录)中,我的web.config包含: -

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow roles="ClauseAdmin"/>
      <allow roles="ProcurementAdmin"/>
      <allow roles="ReportAdmin"/>
      <allow roles="SystemAdmin"/>
      <deny users="*"/>
    </authorization>
  </system.web>
</configuration>

事件日志显示:

Event Type: Information
Event Source:   ASP.NET 2.0.50727.0
Event Category: Web Event 
Event ID:   1314
Date:       26/05/2009
Time:       21:01:05
User:       N/A
Computer:   WILDEAA1
Description:
Event code: 4007 
Event message: URL authorization failed for the request. 
Event time: 26/05/2009 21:01:05 
Event time (UTC): 26/05/2009 20:01:05 
Event ID: af3bac34e6d74630b937a5a05d0f25f2 
Event sequence: 4 
Event occurrence: 1 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/2067908276/Root-1-128878416581538912 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\Inetpub\websites\www.demo.socialclause.net\htdocs\ 
    Machine name: WILDEAA1 

Process information: 
    Process ID: 1076 
    Process name: w3wp.exe 
    Account name: NT AUTHORITY\NETWORK SERVICE 

Request information: 
    Request URL: http://demo.socialclause.net/Secure/Procurement/Default.aspx 
    Request path: /Secure/Procurement/Default.aspx 
    User host address: 91.84.25.241 
    User: richard@wildesoft.net 
    Is authenticated: True 
    Authentication Type: Forms 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 

5 个答案:

答案 0 :(得分:1)

尝试拒绝用户? (匿名)而不是*(全部)

<authentication mode="Forms">
    <forms name=".ASPXFORMSAUTH" loginUrl="~/Common/Login.aspx" timeout="450" />
  </authentication>
  <authorization>
    <deny users="?" />
    <allow roles="Admin" />
  </authorization>

答案 1 :(得分:0)

到目前为止我只使用了sql角色提供程序...我认为答案在于您正在使用的角色提供程序。您的用户似乎没有获得分配的角色。你能为你提供web.config部分吗?例如,这是我的:

      <roleManager enabled="true" defaultProvider="IDTSqlRoleProvider" cacheRolesInCookie="true" cookieProtection="All">
    <providers>
      <clear/>
      <add
        name="IDTSqlRoleProvider"
        type="System.Web.Security.SqlRoleProvider"
        connectionStringName="SqlMembershipConnectionString"
        applicationName="ConsumerSynergy"/>
    </providers>
  </roleManager>

答案 2 :(得分:0)

试试这个?基本上,你说明了允许x,y,z,然后拒绝所有。

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <deny users="*"/>
      <allow roles="ClauseAdmin"/>
      <allow roles="ProcurementAdmin"/>
      <allow roles="ReportAdmin"/>
      <allow roles="SystemAdmin"/>
    </authorization>
  </system.web>
</configuration>

如果不起作用,请尝试此操作。

<?xml version="1.0"?>
<configuration>
  <system.web>
    <authorization>
      <allow roles="ClauseAdmin"/>
      <allow roles="ProcurementAdmin"/>
      <allow roles="ReportAdmin"/>
      <allow roles="SystemAdmin"/>
      <deny users="?"/>
    </authorization>
  </system.web>
</configuration>

答案 3 :(得分:0)

我出现了相同的错误消息,结果发现我的web.config授权部分中的角色名称拼写错误。

答案 4 :(得分:-3)

在这里猜测,因为如果你付钱给我,我就不会使用IIS,但是你可能缺少一些需要在服务器上安装的证书或密码文件?也许你需要告诉IIS你想要匹配的角色/用户。

编辑:根据您发现的其他信息,我将排除证书并专注于如何定义角色。你说它们是在数据库中定义的,但是当你切换服务器时它们变得无效的事实提出了三种可能性:

  1. 您的角色定义为Windows 系统帐户或IIS用户。
  2. 你的角色是 定义为数据库用户,但你的 只复制了数据表,而不是 用户(我的意思是数据库 用户,而不是“用户”表 数据库)。
  3. 您的角色已定义 但阅读权限的权限有 改变。
  4. 我怀疑它是1.)IIS用户。