代码之家  ›  专栏  ›  技术社区  ›  SlackerCoder

MVC 2与IIS 6问题

  •  1
  • SlackerCoder  · 技术社区  · 15 年前

    我正在Windows2003服务器上使用IIS6,我正在尝试在该计算机上安装MVC2项目。我这样做有噩梦般的问题! 我查了很多关于该做什么的参考资料,但没有一个是有效的。(他们为MVC1项目工作,因为我有一些已经在运行的解决方案)。

    是否有人对使用IIS6的MVC2项目需要做什么有任何提示/提示/想法?我一定是把头发拔出来了。

    我已经在我的两个dev服务器上进行了尝试,并且都得到了相同的结果。最接近服务页面的是一个错误页面“对象引用未设置为对象的实例”,但是该页面有被忽略的尝试/捕获块,因此我认为它不会在控制器上运行代码,我认为它是在说控制器是错误。(作为参考,相关错误指向homecontroller.cs文件)。

    我试过的:

    • 通配符映射
    • 将路由更改为控制器.mvc
    • 将路由更改为控制器.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);
    }
    

    家庭控制器.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方法,但它使用用户名调用db并返回数据库中与用户名匹配的记录。

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

    3 回复  |  直到 14 年前
        1
  •  1
  •   Daryl    15 年前

    我在Win2K3上安装了IIS6.0,按照此步骤操作,效果很好:

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

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

        2
  •  2
  •   Jack Marchetti    15 年前

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

        3
  •  1
  •   SlackerCoder    15 年前

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