【问题标题】:UrlRewriting from ASP.NET WebApplication to ASP.NET MVC WebApplication从 ASP.NET Web 应用程序到 ASP.NET MVC Web 应用程序的 URL 重写
【发布时间】:2011-03-05 03:28:14
【问题描述】:

在迁移到 ASP.NET MVC 1 的过程中,我有一个 ASP.NET Web 窗体应用程序。 网址如下:

hxxp://domain/Default.aspx (WebForms)

hxxp://domain/mvc/Controller/Action (MVC)

(hxxp 因为stackoverflow认为它们是链接并阻止我发布这么多)

“mvc”是我的 IIS7 网站中的另一个应用程序。

我现在需要能够做到这一点:

hxxp://domain/subsiteName/Default.aspx (WebForms) hxxp://domain/subsiteName/mvc/Controller/Action (MVC)

其中 'subsiteName' 可以是任何东西,并且必须在运行时检查。我无法为每个 subsiteName 创建目录。

我想到了 UrlRewriting,所以 /subsiteName/* 重写为 /*,但是我不得不从 WebForms 重写为 MVC。

我无法想象在这种情况下,MVC 应用程序会采取一种方式来向 hxxp://domain/subsiteName/mvc/ 发出请求。

有什么想法吗?

【问题讨论】:

    标签: asp.net asp.net-mvc url-rewriting url-routing


    【解决方案1】:

    下面是在Managed Fusion URL Rewriter 中编写以下内容的方法,它使用 Apache mod_rewrite 语法:

    我现在需要能够做到这一点: hxxp://domain/subsiteName/Default.aspx (网络表单) hxxp://domain/subsiteName/mvc/Controller/Action (MVC)

    RewriteRule /(.*)/Default.aspx   /$1/mvc/Controller/Action
    

    但是我假设您还没有像这样设置所有目录,因此您需要某种方式告诉 MVC subsiteName 是一个参数或您的方法。因此,您将在路线中执行以下操作:

    routes.MapRoute(
        "Default",
        "/{siteName}/mvc/{controller}/{action}",
        new { controller = "Home, action = Index }
    );
    

    这将采用重写路径并将其合并到标准HomeController。然后说 Index 动作你会有这样的东西:

    public ActionResult Index (string siteName) { ... }
    

    然后以特殊方式处理siteName。显然,这是您如何处理此问题的过度简化示例,但如果您愿意,您也可以使用自定义视图引擎处理此问题,该引擎会根据站点名称路由到不同的模板。或者,如果您不想在每个方法上都使用 siteName,则可以将其从 routes 变量中提取出来。

    基本上在您完成上述设置后,如果这确实是您想要的结构,您可以通过多种方式处理此问题,您只需要找到当前代码最容易使用的一种即可。

    【讨论】:

    • 实际上,我需要的是让 hxxp://domain/subsiteName/mvc/Controller/Action 重写为 hxxp://domain/mvc/Controller/Action 我想我应该提到“MVC”是托管 WebForms 应用程序的同一网站内的一个应用程序,用于共享 web.config 文件。我发现 Managed Fusion 没有采用 MVC URL。它只记录对 *.aspx 的访问,可能是因为它是一个应用程序域解决方案。我用 Helios ISAPI_Rewrite 模块解决了我的问题。不幸的是,它不是开源的,精简版不支持手动部署。感谢您的帮助。
    猜你喜欢
    • 2010-09-21
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多