roleManager在Default.aspx.cs中导致invalidOperationException

时间:2010-01-12 06:30:44

标签: asp.net asp.net-mvc

我正在尝试在asp.net MVC 1.0中实现customRoleProvider。该课程看起来像这样

using System;
using System.Web.Security;



namespace Project.Web.Services
{
    public class CustomRoleProvider: RoleProvider
    {
        public override bool IsUserInRole(string username, string roleName)
        {
            throw new NotImplementedException();
        }
    public override string[] GetRolesForUser(string username)
    {
        throw new NotImplementedException();
    }

    public override void CreateRole(string roleName)


        {
            throw new NotImplementedException();...

我已按如下方式设置Web.config文件

<configuration>


<system.web>

<roleManager enabled="true" defaultProvider="CustomRoleProvider">
  <providers>
    <clear/>
    <add name="CustomRoleProvider" type="Project.Web.Services.CustomRoleProvider" />
  </providers>

</roleManager>

...

当我这样做时,我从下面的代码中的httpHandler.ProcessRequest(HttpContext.Current);行的Default.aspx.cs中抛出了一个InvalidOperationException

public partial class _Default : Page
{
    public void Page_Load(object sender, System.EventArgs e)
    {
        // Change the current path so that the Routing handler can correctly interpret
        // the request, then restore the original path so that the OutputCache module
        // can correctly process the response (if caching is enabled).

        string originalPath = Request.Path;
        HttpContext.Current.RewritePath(Request.ApplicationPath, false);
        IHttpHandler httpHandler = new MvcHttpHandler();
        httpHandler.ProcessRequest(HttpContext.Current);
        HttpContext.Current.RewritePath(originalPath, false);
    }
}

错误描述如下 无法找到“索引”视图或其主页。搜索了以下位置: 〜/浏览/首页/的Index.aspx 〜/浏览/首页/ Index.ascx 〜/查看/共享/的Index.aspx 〜/查看/共享/ Index.ascx

当我从Web.config中删除roleManager时问题消失了,即使我将以下行放入Web.config中,问题也会重新出现

<roleManager enabled="false"></roleManager>

我还需要做些什么吗?

2 个答案:

答案 0 :(得分:0)

这可能不是您正在寻找的答案,但您可以删除default.aspx和default.aspx.cs,您的网站仍然可以使用。只有某些Web服务器的某些配置才需要该文件,以便它们可以正确处理应用程序的根URL。

我建议您至少在测试时尝试将文件重命名为其他内容(例如backup.aspx)并查看您的网站是否仍然有效。如果确实如此,那么你很高兴。

不幸的是,我不知道你为什么会遇到这个特殊的错误。

答案 1 :(得分:0)

我找到了问题的解决方案,首先提出的错误有点误导了错误的实际原因。问题是我现在意识到有两个Web.config文件;一个在Web项目下,另一个在Views文件夹中。当我把它放在Web项目Web.config下时,我把代码放在了Web.config的视图下,没有更多的错误。