2011-11-25 48 views
1

我有一群用户。如果他们不是特定角色,我不希望他们访问该网站。使用股票.NET成员资格/角色提供者,将认证模式设置为Windows,并在请求结束时设置一些访问规则和拦截,以重定向到定制的401错误页面 - 使用Cassini,这非常简单。ASP.NET Windows身份验证模式,IIS7和自定义错误页面 - 如何?

转发IIS7和集成流水线,使用此版本的IIS和此操作模式将我的网站部署到Web服务器时,这是如何实现的?我应该恢复到一个经典应用程序池,还是破坏了对管道中的请求进行更多控制的目的。

+1

你跟这个有现在的问题是什么?成员和角色提供者仍然在IIS7中工作。 – Xoltar

+0

是的,他们这样做。我的问题是,虽然似乎有整个Http错误(例如401到500)的规定和设置自定义错误的能力。事实上,提供一个非静态的,主页面驱动的错误页面(可在Cassini上运行)似乎证明使用IIS7和集成模式进行配置似乎是“不可能的”。 – brumScouse

+0

编辑表示没有什么是不可能的 – brumScouse

回答

0

我知道这是非常基本的,但你试过吗?这在Web.config文件中。

<customErrors mode="On" defaultRedirect="Error.aspx"> 
    </customErrors> 

另外,我有时放在Application_Error事件下面的代码在全局文件记录异常:

' Fires when an error occurs 
    ' Code that runs when an unhandled error occurs 

    Dim ErrorDescription As String = Server.GetLastError.ToString 

    ' Log the Error to Event Log 
    'Creation of event log if it does not exist 
    Dim EventLogName As String 
    EventLogName = ConfigurationManager.AppSettings("ApplicationLog").ToString() 

    If (Not EventLog.SourceExists(EventLogName)) Then 
     EventLog.CreateEventSource(EventLogName, EventLogName) 
    End If 

    ' Inserting into event log 
    Dim Log As New EventLog() 
    Log.Source = EventLogName 
    Log.WriteEntry(ErrorDescription, EventLogEntryType.Error) 
+0

不幸的是,这是行不通的。 401.2和401.3错误的自定义错误超出了ASP.NET处理的范围。据我了解,在ASP.NET可以接触到无效请求之前,它们由IIS7处理,并且您必须像时髦的鸡一样跳舞才能显示优雅的错误消息。 – brumScouse