Asp.net mvc Azure中的ASP.NET MVC路由
我有一个Azure Web角色项目,最近被另一个开发人员MVC开发。据开发者称,该应用程序在自己运行时(即作为一个简单的web应用程序)不会出现任何问题。然而,当我尝试在Azure云服务的上下文中运行它时,我看到了一些404错误。我怀疑这条路线有点不对。以下是Global.asax.cs中当前RegisterRoutes方法的缩写版本:Asp.net mvc Azure中的ASP.NET MVC路由,asp.net-mvc,azure,Asp.net Mvc,Azure,我有一个Azure Web角色项目,最近被另一个开发人员MVC开发。据开发者称,该应用程序在自己运行时(即作为一个简单的web应用程序)不会出现任何问题。然而,当我尝试在Azure云服务的上下文中运行它时,我看到了一些404错误。我怀疑这条路线有点不对。以下是Global.asax.cs中当前RegisterRoutes方法的缩写版本: public static void RegisterRoutes(RouteCollection routes){ routes.IgnoreRoute
public static void RegisterRoutes(RouteCollection routes){
routes.IgnoreRoute("{Services}/{*pathInfo}");
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Configuration",
"Configuration",
new { controller = "Configuration", action = "Index" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Account", action = "Index", id = "" }
);}
当应用程序启动时,将显示帐户控制器索引操作的正确视图。然而,如果我尝试导航到配置,我会得到一个404。如果我将此方法更改为:
public static void RegisterRoutes(RouteCollection routes){
routes.IgnoreRoute("{Services}/{*pathInfo}");
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Account",
"Account",
new { controller = "Account", action = "Index" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Configuration", action = "Index", id = "" }
);}
我从配置控制器的索引操作中获得了正确的视图,但无法导航到帐户视图
我猜这是一个简单的问题要解决,但不知道到底对Azure应用程序“MVC”做了什么,而且是MVC的新手,这让我头痛不已
以下是我遇到此问题的机器配置:
带IIS 7.0的Windows 7 Ultimate
VisualStudio2008SP1
ASP.NET MVC 1.0
WindowsAzure SDK 1.0
想法?尝试使用我的路由调试器。它可以帮助你了解发生了什么 奇怪的是,本地的行为与Azure中的不同。此外,您应该发布控制器代码(删除操作方法的内容,我们只需要查看方法签名)
如果我不得不胡乱猜测,我猜您的配置路由(在您给出的第一个示例中)需要在默认部分添加id=“”。我认为这不是您的问题,但您可以验证System.Web.Mvc引用的Copy Local=true。Haacked:感谢您将我指向调试器。这帮助我在几分钟内找到了这个问题 答案比我想象的要简单得多。这一切都与以下代码行有关:
routes.IgnoreRoute("{Services}/{*pathInfo}");
我写这行代码是为了帮助解决我在ASP.NET MVC和WCF RIA服务中遇到的一个问题(更多信息)。花括号不应该在那里。我不想更换服务。代码应该如下所示:
routes.IgnoreRoute("Services/{*pathInfo}");
你可以读一篇完整的评论