I’ve created a ASP.Net MVC 4 web site that has several custom routes which are registered in the ~/App_Start/RouteConfig file.
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 }
);
}
}
This site is working great outside of Azure and even works in the Azure emulator, but when I move it up to Azure, it’s acting like there are no routes. For instance, when I try to navigate to the root of the web site I get an error stating:
403 - Forbidden: Access is denied.
You do not have permission to view this directory or page using the credentials that you supplied.
This made me think that the route simply wasn’t working so I tried going to a another page like http://myapp.cloudapp.net/1234 (which should send 1234 into the home controller’s index action. But that action gives me a 404 error.
I’ve checked my configuration against and new ASP.Net MVC 4 Azure project and they appear to be the same. I’ve also read through this which gave some pointers but ultimately didn’t help.
Any advice on how to troubleshoot this?
Update
This is a WebRole project and is using .Net 4.0 (I already down converted from 4.5).
Have you tried setting a default page as per this article http://www.sunilhaste.com/2011/04/403-forbidden-access-is-denied-error.html
I also had had a similar issue and mine was fixed by setting the role to be 2008 R2. Someone in comments to the linked article says
Also see the following Asp.net and Azure – Can't no longer show my web application suggests checking you have
<modules runAllManagedModulesForAllRequests="true" />Also I assume you are making sure that MVC4 files are being deployed to Azure. Have your RDP’d to the machine and checked event log etc?