【发布时间】:2016-10-12 22:40:17
【问题描述】:
我有一个 asp.net MVC 4 应用程序。
这是 RouteConfig.cs:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute("Home", "home", new { controller = "Home", action = "Index" });
routes.MapRoute("Pricing", "pricing", new { controller = "Home", action = "Pricing" });
routes.MapRoute("AboutUs", "aboutus", new { controller = "Home", action = "AboutUs" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
我将这个全新部署到 Windows 2012 服务器。工作得很好。路由从某些 URL 中删除 /home/ - 例如:
mydomain.com/home/pricing
变成
mydomain.com/pricing
部署后,我决定添加 3 个新路由 - 用于注册流程:
routes.MapRoute("SignUp", "SignUp", new { controller = "Myuser", action = "SignUp" });
routes.MapRoute("SignUp2", "SignUp2", new { controller = "Myuser", action = "SignUp2" });
routes.MapRoute("SignUpEnd", "SignUpEnd", new { controller = "Myuser", action = "SignUpEnd" });
就在默认路由的上方。他们在那里改变:
mydomain.com/myuser/signup
到
mydomain.com/signup
他们在本地工作得很好。但是,当我将新的 RouteConfig.cs 部署到服务器时 - 没有一个新路由被识别(旧路由仍然是)。
我尝试在 IIS 中重新启动网站,不同的浏览器甚至不同的计算机 - 没有效果。
我在 Google 上找不到任何东西。
我觉得我遗漏了一些明显的东西 - 我怎样才能让更新的路线在服务器上被识别?
【问题讨论】:
-
您不会将
RouteConfig.cs部署到服务器。您将把它编译成一个程序集并将 程序集 部署到服务器。最实用的部署方式是使用 Visual Studio 的发布功能。 -
你为什么要这样做?任何链接等?
-
是不是——简单地说,本质上——不仅仅是“上传 bin 文件夹”的情况?
-
我过去使用过 web deploy - 它还可以 - 尽管它确实带来了新的挑战。 SFTP 的简单性有很多话要说。这里有 2 个注意事项 - 上传什么以及如何上传。上传什么是“bin 文件夹”——如何上传是另一个问题。我同意网络部署是一种选择——尽管它不能直接解决问题?! (无论哪种方式,我都非常感谢您的意见)。
标签: c# asp.net-mvc asp.net-mvc-4 asp.net-mvc-routing