带有IIS 6问题的MVC 2

时间:2010-04-08 14:24:54

标签: asp.net iis asp.net-mvc-2 iis-6

我在Windows 2003 Server上使用IIS 6,我正在尝试在该计算机上安装MVC2项目。我这样做有噩梦般的问题! 我已经查阅了很多关于该做什么的参考资料,而不是一个单一的工作。 (他们为MVC1项目工作,因为我有一些人已经在使用所述解决方案)。

对于使用IIS 6的MVC2项目需要做什么,有没有人有任何提示/提示/想法?我肯定会把头发拉过来。

我在我的两台开发服务器上试过它,两者都得到了相同的结果。我最接近服务页面的是一个错误页面“对象引用未设置为对象的实例”,但是,页面有try / catch块被忽略,所以我不认为它运行代码控制器,我认为它说控制器是错误的。 (作为参考,有问题的错误是针对HomeController.cs文件的。)

我尝试了什么:

  • 通配符映射
  • 将路线更改为{controller} .mvc
  • 将路线更改为{controller} .aspx
  • 将.mvc扩展名添加到IIS
  • 修改Global.asax中的路由

到目前为止,这个项目中有很多代码,所以我只发布应该提供服务的第一页:

MASTER PAGE:

<div class="page">
    <div id="header">
        <div id="title">
            <h1>Meritain RedCard Interface 2.0</h1>
        </div>

        <!--
        This is the main menu. Each security role will have access to certain buttons. 
        -->
        <div id="menucontainer">
            <% if (Session["UserData"] != null)
               { %>
                <% if (/*User Security Checks Out*/)
                   { %>
                    <ul id="menu">
                        <li><%= Html.ActionLink("Home", "Index", "Home")%></li>
                        <li><%= Html.ActionLink("Selection", "Index", "Select", new { area = "Selector" }, null)%></li>
                        <li><%= Html.ActionLink("Audit", "Index", "Audit", new { area = "Auditor" }, null)%></li>
                        <li><%= Html.ActionLink("Setup", "Index", "Setup", new { area = "Setup" }, null)%></li>
                        <li><%= Html.ActionLink("About", "About", "Home")%></li>
                    </ul>
                <% } %>
            <% } %>
        </div>
    </div>

    <div id="main">
        <asp:ContentPlaceHolder ID="MainContent" runat="server" />

        <div id="footer">
        </div>
    </div>
</div>

Default.aspx.cs:[我将此文件添加为潜在解决方案,因为它适用于MVC 1]

protected void Page_Load(object sender, EventArgs e)
{
    string originalPath = Request.Path;
    HttpContext.Current.RewritePath(Request.ApplicationPath, false);
    IHttpHandler httpHandler = new MvcHttpHandler();
    httpHandler.ProcessRequest(HttpContext.Current);
    HttpContext.Current.RewritePath(originalPath, false);
}

HomeController.cs:

public ActionResult Index()
{
    loadApplication();

    ViewData["Message"] = "Welcome to ASP.NET MVC!";

    return View();
}

public ActionResult About()
{
    return View();
}

private void loadApplication()
{
    Session["UserData"] =
        CreateUserSecurity(HttpContext.User.Identity.Name.ToString());
}

我没有列出CreateUserSecurity方法,但只是它使用Username调用数据库并返回数据库中与用户名匹配的记录。

编辑:添加了代码以及我到目前为止所尝试的内容(根据要求)。

3 个答案:

答案 0 :(得分:2)

如果这是.NET 4.0中的asp.net mvc 2,请确保在网站扩展名下允许它。

答案 1 :(得分:1)

事实证明,其中一个技巧奏效了! (将.mvc扩展名添加到IIS)。它只是没有为我的机器工作。当我有其他人尝试该网站(连接到服务器)它服务它就好了。一旦我清除了我的缓存/ cookies /等,它似乎工作正常。我仍然无法让它直接在服务器上工作(在IIS或其他方面),但这很好,因为它永远不会从服务器本身运行。

答案 2 :(得分:1)

我按照这个步骤来设置WIN2K3上的IIS 6.0并且效果很好:

http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

如果发现通过ASP.NET开发服务器在本地运行它很好。我没有尝试在我本地安装的IIS上设置应用程序。