Запустите приложение на локальном хосте с IIS Express - C # - PullRequest
0 голосов
/ 11 октября 2018

У меня проблема.Я хочу запустить новый экземпляр моего приложения из Visual Studio (C #).

Оно начинается с http://localhost:54619/. Проблема в том, что при запуске создается цикл в методе Application_BeginRequest()класса Global.asax.cs, и он никогда не выходит оттуда.Я пытаюсь перенаправить его с Response.RedirectToRoute("Default"), но он не работает.Я не могу выйти из этого метода.

    protected void Application_BeginRequest()
    {
    Response.Redirect("~/Principal");
    }

Я использую ASP.NET MVC, IIS Express.

1 Ответ

0 голосов
/ 11 октября 2018

Ваша проблема в том, что Application_BeginRequest(), как указано в его названии, выполняется всегда, когда ваше приложение получает запрос.Затем в этом методе вы отвечаете клиенту, что он должен идти вместо ~/Principal пути.Когда клиент получает этот ответ, он создает новый запрос, который будет равномерно получать тот же ответ.Вы хотели перенаправить запросы на ваш контроллер по умолчанию.Вы должны сделать это, зарегистрировав маршрут к этому контроллеру.Шаблон MVC для ASP.NET имеет пример для этого:

  1. Создать функцию, которая регистрирует нужные маршруты

    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 }
                );
            }
        }
    
  2. Вызватьфункция в Global.asax.cs

     public class MvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start()
            {
                AreaRegistration.RegisterAllAreas();
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
            }
        }
    

Теперь ваше приложение должно перенаправить пользователя на контроллер с именем «Home» и на его действие под названием «Index», если другой маршрут не подходитзапрос.

...