【问题标题】:MVC 2 with IIS 6 Problems带有 IIS 6 问题的 MVC 2
【发布时间】:2023-03-27 16:05:01
【问题描述】:

我在 Windows 2003 服务器上使用 IIS 6,并试图在该机器上安装一个 MVC2 项目。这样做我遇到了噩梦般的问题! 我已经查阅了大量关于该做什么的参考资料,而不是一个单独的作品。 (它们适用于 MVC1 项目,因为我有一些项目已经在使用上述解决方案)。

是否有人对使用 IIS 6 的 MVC2 项目需要做什么有任何提示/提示/想法?我肯定会为此而烦恼。

我已经在我的两台开发服务器上进行了尝试,都得到了相同的结果。最接近服务页面的是错误页面“对象引用未设置为对象的实例”,但是,该页面具有被忽略的 try/catch 块,因此我认为它不会在控制器,我认为这是说控制器是错误的。 (供参考,有问题的错误指向 HomeController.cs 文件)。

我尝试过的:

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

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

母版页:

<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 方法,但它所做的只是使用用户名调用数据库并返回数据库中与用户名匹配的记录。

编辑:添加代码和我迄今为止尝试过的内容(根据要求)。

【问题讨论】:

  • 事件日志中是否有任何可能有帮助的内容?
  • @mmacaulay - 事件日志中完全没有记录。
  • 请在您的问题中输入您尝试过的内容以及您正在使用的代码。
  • 你为什么要把东西放在Page_Load?你为什么使用Page_Load?这不是 ASP.NET。
  • page_load 是我在 MVC1 应用程序中必须使用的一个技巧。这只是我让它发挥作用的尝试之一。

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我按照这个步骤在 WIN2K3 上设置 IIS 6.0,效果很好:

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

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

    【讨论】:

    • 这是我遵循的“教程”之一。这是真正奏效的赢家。我认为其他一些也可以工作,但考虑到在我清除缓存之前我无法让任何东西在我的系统上工作,等等,我永远无法完成任何事情!
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 2011-06-19
      • 1970-01-01
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多