在IIS7上运行ASP.NET MVC 2网站时出现问题

时间:2009-12-31 14:15:17

标签: asp.net-mvc iis-7 .net-4.0 visual-studio-2010-beta-2

我正在尝试将我的ASP.NET MVC 2网站从VS2010 beta 2部署到IIS7。发布工作正常,但没有一条路由有效,所以当我转到URL http://localhost/myapp/Home/Index时,我收到错误:

  

HTTP错误404.0 - 未找到   你正在寻找的资源   删除,更改名称,或者是   暂时不可用。

我正在部署到一个虚拟目录,该目录使用为.NET 4框架配置的应用程序池,并将托管管道模式设置为集成。此外,如果我进入基本设置 - >测试连接,则两个测试都通过。根据我的理解,它应该有效吗?

我从VS2008部署书呆子晚餐时没有任何问题,这很好。

2 个答案:

答案 0 :(得分:0)

您是否在发布中包含了正确的MVC dll?

我在浏览MVC应用程序时遇到问题,原因是我没有在bin文件夹中包含MVC dll。

答案 1 :(得分:0)

根据我对ASP.NET MVC的经验,我已经看到IIS需要Default.aspx页才能正常运行。我正在使用ASP.NET MVC 1模板中包含的页面。不幸的是,ASP.NET MVC 2不包含此页面(据我所知),因此您应该将以下内容添加到项目中:

Default.aspx的:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="YourNamespace._Default" %>

<%-- Please do not delete this file. It is used to ensure that ASP.NET MVC is activated by IIS when a user makes a "/" request to the server. --%>

Default.aspx.cs:

using System.Web;
using System.Web.Mvc;
using System.Web.UI;

namespace YourNamespace
{
    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);
        }
    }
}