Asp.net mvc MVC路由索引/id操作转到服务器根目录

Asp.net mvc MVC路由索引/id操作转到服务器根目录,asp.net-mvc,asp.net-mvc-4,iis,routing,iis-7.5,Asp.net Mvc,Asp.net Mvc 4,Iis,Routing,Iis 7.5,如果我有一个ActionLink,它指向服务器/站点/价格/指数/24(价格是控制器,指数是动作),那么它实际上是导航到服务器/24,这显然提供了404。同样,如果我转到服务器/站点/选项/索引/15(选项是控制器,索引是操作),它实际做的是导航到服务器/15 我发现更奇怪的是,它是指向服务器根,而不是站点根 在我的开发机器上运行iisexpress可以很好地工作。但是,在服务器上,当导航到名为索引的操作时,它的行为很奇怪。我正在使用VS2013发布进行部署。 如果我将索引操作名称更改为其他名称

如果我有一个ActionLink,它指向服务器/站点/价格/指数/24(价格是控制器,指数是动作),那么它实际上是导航到服务器/24,这显然提供了404。同样,如果我转到服务器/站点/选项/索引/15(选项是控制器,索引是操作),它实际做的是导航到服务器/15

我发现更奇怪的是,它是指向服务器根,而不是站点根

在我的开发机器上运行iisexpress可以很好地工作。但是,在服务器上,当导航到名为索引的操作时,它的行为很奇怪。我正在使用VS2013发布进行部署。 如果我将索引操作名称更改为其他名称,那么这将起作用

我最初以为这只是一个控制器问题,但后来又遇到另一个控制器索引操作做同样的事情

我的路线图

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

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
我的动作链接是这样的

@Html.ActionLink("Options and Prices", "Index", "Prices", new { id = option.Id }, new { @class = "btn btn-primary btn-sm" })

此外,如果我部署到另一台服务器,并且它工作正常,则需要添加。也可以在本地使用IIS Express。表明某个地方有IIS设置

我们能看看你的actionlink吗?另外,路由配置中的{name}部分有什么用?Server/Site/Prices/Index/24。您能在该url中提及控制器、操作和参数吗?@jbutler483已编辑以添加actionlink。{name}是关于为id提供一个好的显示名称,但是问题在于路由中是否存在这个名称。我将删除以避免混淆。JeevaJsb现在添加了注意什么是控制器和操作。请尝试更具体的操作,而不是默认操作。routes.MapRoute(“ServerSite”//Route name“Prices/Index/{id}”,//URL和参数new{controller=“Prices”,action=“Index”,id=urlparmeter.Optional}//Parameter defaults);您知道这一点,但无论如何都知道这一点,这应该放在默认路由之前。。