1

我创建了一个 ASP.Net MVC 4 网站,其中有几个在 ~/App_Start/RouteConfig 文件中注册的自定义路由。

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Empty",
            url: "",
            defaults: new { controller = "Home", action = "Index", id = 0 }
        );

        routes.MapRoute(
            name: "Session",
            url: "{id}",
            defaults: new { controller = "Home", action = "Index" }
        );

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

该站点在 Azure 之外运行良好,甚至可以在 Azure 模拟器中运行,但是当我将其移至 Azure 时,它​​的行为就像没有路线一样。例如,当我尝试导航到网站的根目录时,我收到一条错误消息:

403 - Forbidden: Access is denied.

You do not have permission to view this directory or page using the credentials that you supplied.

这让我认为该路线根本不起作用,所以我尝试转到另一个页面,例如http://myapp.cloudapp.net/1234(应该将 1234 发送到主控制器的索引操作中。但是该操作给了我一个404 错误。

我检查了我的配置和新的 ASP.Net MVC 4 Azure 项目,它们看起来是一样的。我也通读了这个,它给出了一些指示,但最终没有帮助。

有关如何解决此问题的任何建议?

更新

这是一个 WebRole 项目,正在使用 .Net 4.0(我已经从 4.5 向下转换)。

4

1 回答 1

3

您是否尝试过按照本文设置默认页面http://www.sunilhaste.com/2011/04/403-forbidden-access-is-denied-error.html

  1. 将 Web 角色上传到 Azure 后,您尝试访问应用程序并突然收到“403-Forbidden, Access denied”错误。
  2. 您可以通过提供完整的网址来访问页面:- http://xyz.cloudapp.net/Pages/Home.aspx
  3. 您网站的根级别没有 default.aspx 页面。解决方案:- 您应该做的第一件事是,检查您是否在 system.webserver 标签内的 web.config 文件中添加了以下标签。

   <add value="Pages/Home.aspx"/>

我也遇到过类似的问题,我的问题是通过将角色设置为 2008 R2 来解决的。有人在链接文章的评论中说

将操作系统配置从 MS SERVER 2008 SP2 更改为 MS SERVER 2008 R2

另请参阅以下Asp.net 和 Azure - 无法再显示我的 Web 应用程序建议检查您有<modules runAllManagedModulesForAllRequests="true" />

此外,我假设您确保将 MVC4 文件部署到 Azure。您的 RDP 是否已连接到机器并检查了事件日志等?

于 2012-10-14T13:10:17.420 回答