asp.net-mvc和webforms共存

asp.net-mvc和webforms共存,asp.net-mvc,webforms,Asp.net Mvc,Webforms,我知道我以前问过这个问题,我知道有很多资源描述这项技术,但我一生都无法解决它 我首先创建了一个简单的WebForms应用程序 然后我添加了视图和控制器文件夹。 然后,我将主文件夹和共享文件夹添加到视图中,并添加了Index.aspx和site.master文件 我创建了HomeController.cs文件 然后我对web.config进行了更改,并将web.config添加到views文件夹中 然后我对global.asax页面进行了更改 整个过程都在编译,路由似乎已经注册,但我根本无法打开主

我知道我以前问过这个问题,我知道有很多资源描述这项技术,但我一生都无法解决它

我首先创建了一个简单的WebForms应用程序

然后我添加了视图和控制器文件夹。 然后,我将主文件夹和共享文件夹添加到视图中,并添加了Index.aspx和site.master文件

我创建了HomeController.cs文件

然后我对web.config进行了更改,并将web.config添加到views文件夹中

然后我对global.asax页面进行了更改

整个过程都在编译,路由似乎已经注册,但我根本无法打开主页/索引页

我总是收到“HTTP错误404-未找到”

有人真的做到了吗?哦,我们用的是IIS6

下面的代码

全球的

public static void RegisterRoutes(System.Web.Routing.RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{resource}.aspx/{*pathInfo}");

    routes.MapRoute(
        "Default",                                              // Route name
        "{controller}.mvc/{action}/{id}",                           // URL with parameters
        new { action = "Index", id = "" }  // Parameter defaults
    );

    routes.MapRoute(
        "Root",
        "",
        new { controller = "Home", action = "Index", id = "" }
      );

}
Web.Config

<compilation debug="true">
            <assemblies>
                <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>


        <pages>
            <controls>
                <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
                <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            </controls>
            <namespaces>
                <add namespace="System.Web.Mvc"/>
                <add namespace="System.Web.Mvc.Html"/>
                <add namespace="System.Web.Routing"/>
                <add namespace="System.Web.Mvc.Ajax"/>
                <add namespace="System.Linq"/>
                <add namespace="System.Collections.Generic"/>
            </namespaces>
        </pages>


        <httpModules>
            <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        </httpModules>
主视图

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/MVCSite.master" Inherits="System.Web.Mvc.ViewPage"%>

<script runat="server">

</script>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">

    MVC Home Page

    <%= Html.TextBox("txtTest") %>
    <%= Html.ActionLink("About Page", "About") %>

</asp:Content>

MVC主页

是否设置了通配符映射


我会选择另一种方式,创建一个MVC应用程序,然后添加您需要的webforms。由于默认的MVC应用程序已经为您设置了所有必需的位,所以它要简单得多


您将需要创建一个单独的文件夹,您的网络表单将生活在其中。然后,您可以根据需要从路由引擎中包括/排除该文件夹。

结果表明,该网站需要是一个web应用程序

我还需要在web.config中添加以下内容:

<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

            <remove name="UrlRoutingModule"/>
            <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing"/>


感谢并感谢所有试图提供帮助的人。

IIS 6或IIS 7?另外,您使用controller.mvc/action作为路由,因此它应该是/Home.mvc/indexIt的IIS6@Mauricio。我试着输入/Home.mvc/index,得到了“找不到资源”。不,我没有。老实说,我在做什么方面遇到了一些困难。那么这就是你的问题。IIS6不知道如何处理。mvc链接。嗯,我是说“这是你的问题”,而不是“现在是你的问题,糟透了,哈哈”。如果是这样的话,我很抱歉,我只是确定您缺乏通配符映射是问题的根源。而且,该指南是最好的。我自己做得再好不过了。它准确地告诉你要点击什么。@jfar,酷伙计。是的,现在有点忙,年底前的项目总结。你知道的。因此,在篇幅较长的页面上,加上解释,篇幅很小。我知道。我添加了+1使其恢复为零。是的,这不是一个坏主意,我正在尝试将mvc应用到一个巨大的现有webforms应用程序中。我们正在尝试一件一件地替换一件,而不是一次完成。从一个基本上为您提供的可运行的MVC应用程序开始显然更容易。如果你真的想知道什么坏了,你可以创建一个,并将它与你的应用程序配置设置进行比较。是的,我想我可以这样做。还没有人真正做到这一点吗?
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

            <remove name="UrlRoutingModule"/>
            <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing"/>