Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc Azure中的ASP.NET MVC路由_Asp.net Mvc_Azure - Fatal编程技术网

Asp.net mvc Azure中的ASP.NET MVC路由

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

我有一个Azure Web角色项目,最近被另一个开发人员MVC开发。据开发者称,该应用程序在自己运行时(即作为一个简单的web应用程序)不会出现任何问题。然而,当我尝试在Azure云服务的上下文中运行它时,我看到了一些404错误。我怀疑这条路线有点不对。以下是Global.asax.cs中当前RegisterRoutes方法的缩写版本:

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}");
你可以读一篇完整的评论