Настройка IIS 6.0 для запуска приложения MVC3 - PullRequest
1 голос
/ 19 ноября 2011

Настройка IIS 6.0 для запуска приложения MVC3

Мне кажется, у меня проблема с конфигурацией на моем сервере IIS 6, и я хотел бы посмотреть, пропустил ли я что-нибудь.

Проблема, с которой я сталкиваюсь, заключается в том, что в любое время , когда выполняется RedirectToAction ("Index", "Home") (например, в методе, который возвращает ActionResult), я ожидаю, чтоМне будет возвращено:

http://servername.domain.com/virtualdirectoryname

Однако вместо этого я получаю перенаправление на:

http://servername.domain.com/virtualdirectoryname/virtualdirectoryname

Это второй экземпляр virtualdirectoryname, добавляемый в конец URL-адреса и может 'не могу понять, почему - этот URL, конечно, приведет к ошибке 404 ресурс не найден.Я написал и развернул несколько приложений MVC3 как в корпоративной интрасети, так и в общедоступных интернет-средах и не могу понять, что я сделал неправильно.Мой global.asax.cs выглядит нормально -

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

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

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
     }

    protected void Application_AuthenticateRequest(Object sender, EventArgs e)
    {
        if (HttpContext.Current.User != null)
        {
            if (HttpContext.Current.User.Identity.IsAuthenticated)
            {
                if (HttpContext.Current.User.Identity is FormsIdentity)
                {
                    FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
                    FormsAuthenticationTicket ticket = id.Ticket;

                    // Get the stored user-data, in this case, our roles
                    string userData = ticket.UserData;
                    string[] roles = userData.Split(',');
                    HttpContext.Current.User = new System.Security.Principal.GenericPrincipal(id, roles);
                }
            }
        }
    }

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }
}

Application_AuthenticateRequest обрабатывает сохранение ролей для вошедших в систему пользователей, но в остальном это выглядит довольно ванильно.Я могу думать только о том, что я как-то испортил виртуальный каталог.

Перед выполнением любого из этих шагов я проверил, что на сервере установлены MVC3 и v4.0 .NET Framework.Есть также другие приложения ASP.NET 4.0 на этом сервере, которые работали без инцидентов.Существует также приложение MVC2 (также установлено MVC2), работающее на этом сервере и работающее без инцидентов.

  1. Я создал виртуальный каталог на главном «сайте по умолчанию» с помощью диспетчера IIS.
  2. Установите соответствующие разрешения для папки, на которую указывает этот виртуальный каталог.Протестировано с быстрым файлом "Hello, World" index.html.
  3. Скопировал приложение с моего компьютера разработки, на котором приложение работает, как разработано, в папку, описанную в # 2.
  4. Обновлен файл Web.Config, в котором редактируются строки подключения, указывающие на тестовый сервер базы данных;Я также проверил эти строки подключения на своем ПК для разработки.
  5. Откройте веб-браузер и надейтесь на лучшее.

Любая помощь очень ценится.

Спасибо!

1 Ответ

1 голос
/ 19 ноября 2011

Я думаю, вы можете видеть:

http://servername.domain.com/virtualdirectoryname/applicationname

Если вы назвали свой виртуальный каталог тем же именем, что и ваше приложение, тогда я мог бы понять, как это может сбить вас с толку. Если у вас нет виртуального каталога и только ваше приложение в корне веб-сайта по умолчанию, вы увидите:

http://servername.domain.com/applicationname

Ваш виртуальный каталог совпадает с именем вашего приложения? Если это так, вот почему вы видите это.

...