Проблемы MVC 2 с IIS 6 - PullRequest
       18

Проблемы MVC 2 с IIS 6

1 голос
/ 08 апреля 2010

Я использую IIS 6 на Windows 2003 Server и пытаюсь установить на эту машину проект MVC2. У меня проблемы с кошмарами при этом! Я посмотрел тонны ссылок на то, что делать, а не 1 единственный работает. (Они работают для проектов MVC1, так как некоторые из них уже используют упомянутые решения).

Есть ли у кого-нибудь какие-либо советы / подсказки / идеи относительно того, что необходимо сделать для проектов MVC2 с IIS 6? Я определенно тяну волосы за это.

Я пробовал это на 2 моих серверах разработки, и оба получили одинаковый результат. Самая близкая к доступной странице я могу получить страницу с ошибкой «Ссылка на объект не установлена ​​на экземпляр объекта», однако на странице есть блоки try / catch, которые игнорируются, поэтому я не думаю, что она выполняет код на контроллер, я думаю, это говорит о том, что контроллер является ошибкой. (Для справки, рассматриваемая ошибка направлена ​​в файл HomeController.cs).

Что я пробовал:

  • Подстановочный знак
  • Изменение маршрутов на {controller} .mvc
  • Изменение маршрутов на {controller} .aspx
  • Добавление расширения .mvc в IIS
  • Изменение маршрутов в Global.asax

Пока в этом проекте много кода, поэтому я опубликую только первые страницы, которые должны быть обслужены:

ОСНОВНАЯ СТРАНИЦА:

<div class="page">
    <div id="header">
        <div id="title">
            <h1>Meritain RedCard Interface 2.0</h1>
        </div>

        <!--
        This is the main menu. Each security role will have access to certain buttons. 
        -->
        <div id="menucontainer">
            <% if (Session["UserData"] != null)
               { %>
                <% if (/*User Security Checks Out*/)
                   { %>
                    <ul id="menu">
                        <li><%= Html.ActionLink("Home", "Index", "Home")%></li>
                        <li><%= Html.ActionLink("Selection", "Index", "Select", new { area = "Selector" }, null)%></li>
                        <li><%= Html.ActionLink("Audit", "Index", "Audit", new { area = "Auditor" }, null)%></li>
                        <li><%= Html.ActionLink("Setup", "Index", "Setup", new { area = "Setup" }, null)%></li>
                        <li><%= Html.ActionLink("About", "About", "Home")%></li>
                    </ul>
                <% } %>
            <% } %>
        </div>
    </div>

    <div id="main">
        <asp:ContentPlaceHolder ID="MainContent" runat="server" />

        <div id="footer">
        </div>
    </div>
</div>

Default.aspx.cs: [я добавил этот файл в качестве потенциального решения, так как он работает с MVC 1]

protected void Page_Load(object sender, EventArgs e)
{
    string originalPath = Request.Path;
    HttpContext.Current.RewritePath(Request.ApplicationPath, false);
    IHttpHandler httpHandler = new MvcHttpHandler();
    httpHandler.ProcessRequest(HttpContext.Current);
    HttpContext.Current.RewritePath(originalPath, false);
}

HomeController.cs:

public ActionResult Index()
{
    loadApplication();

    ViewData["Message"] = "Welcome to ASP.NET MVC!";

    return View();
}

public ActionResult About()
{
    return View();
}

private void loadApplication()
{
    Session["UserData"] =
        CreateUserSecurity(HttpContext.User.Identity.Name.ToString());
}

Я не перечислил метод CreateUserSecurity, но все, что он делает, это вызывает БД с использованием имени пользователя и возвращает запись в базе данных, которая соответствует имени пользователя.

РЕДАКТИРОВАТЬ: Добавлен код и то, что я пробовал до сих пор (в соответствии с просьбой).

Ответы [ 3 ]

2 голосов
/ 08 апреля 2010

Если это asp.net mvc 2 в .NET 4.0, убедитесь, что вы разрешили его в разделе расширений веб-сайта.

1 голос
/ 08 апреля 2010

Я выполнил этот шаг для настройки IIS 6.0 на WIN2K3, и он прекрасно работал:

http://haacked.com/archive/2008/11/26/asp.net-mvc-on-iis-6-walkthrough.aspx

Если обнаружилось, что запускать его локально через сервер разработки ASP.NET было нормально. Я не пытался настроить приложение при локальной установке IIS.

1 голос
/ 08 апреля 2010

Как оказалось, ОДИН из этих трюков сработал! (Добавление расширения .mvc в IIS). Это просто не работает для моей машины. Когда у меня был кто-то другой, попробовавший сайт (подключившийся к серверу), он работал нормально. Как только я очистил свой кеш / куки / и т. Д., Похоже, все работает нормально. Я до сих пор не могу заставить его работать напрямую на сервере (в IIS или иным способом), но это нормально, поскольку он никогда не будет запускаться с самого сервера.

...