在asp.net mvc中,Internet Explorer抛出路由异常但Chrome是可以的

时间:2018-03-06 21:56:32

标签: asp.net-mvc routing asp.net-mvc-routing

如果我在url之后没有正斜杠,那么在不同控制器上路由到不同的操作方法时会出现异常。路由引擎确实路由我,如果网址中没有正斜杠我只是收到一个例外,我正在使用Internet Explorer进行调试,Chrome工作正常。看起来它首先在寻找索引的默认网址,如果没有找到它会查看传入的内容。我可能在这里错了...

如果我在渲染后添加正斜杠,则无异常。

<a class="btn-sm" style="font-size: 1em; font-weight: bold;" href="/profile/general/">Profile</a>

这会将我引导到网址,但有一个例外,如果我使用的是IE。如果我使用Chrome,它可以正常工作,也不例外。

<a class="btn-sm" style="font-size: 1em; font-weight: bold;" href="/profile/general">Profile</a>

这是例外

  

System.Web.HttpException:在控制器'YogaBand2017.Controllers.ProfileController'上找不到公共操作方法'Index'。

这是动作方法

public ActionResult General()
    {
        try
        {
            ViewBag.MenuItem = "profile";
            ViewBag.UserMenuItem = "general";

            var viewModel = _yogaProfileService.GetGeneralInfo(User.Identity.GetUserId());
            return View(viewModel);
        }
        catch (Exception ex)
        {
            _errorService.LogError(ex, Request);
            ViewBag.Message = "Oh No! Something went wrong fetching your info. We're looking into this now!";
            return View("Error");
        }
    }

这是我的routeconfig文件

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

        routes.MapRoute(
            name: "SpaceCleanRoute",
            url: "space/{id}",
            defaults: new { controller = "space", action = "index" },
            constraints: new { id = @"\d+" }
        );


        routes.MapRoute(
            name: "PublicSpaceRoute",
            url: "space/public/{title}",
            defaults: new { controller = "space", action = "public" },
            constraints: new { title = @"^[A-Za-z0-9-]+$" }
        );

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


    }
}

以下是呈现之前的操作链接

@Html.ActionLink("Profile", "general", "profile", new { }, new { @class = "btn-sm", @style = "font-weight: bold; font-size: 1em;" })

0 个答案:

没有答案