ASP.NET MVC на IIS6

Вы помещаете атрибут автофокуса в неправильное место.

@Html.EditorFor(model => model.Description, 
     new { htmlAttributes = new { @class = "form-control" }, autofocus = "" })

Попробуйте это вместо:

@Html.EditorFor(model => model.Description, 
     new { htmlAttributes = new { @class = "form-control", autofocus = "" } })
25
задан Seb Nilsson 2 September 2008 в 13:36
поделиться

8 ответов

Это взяло меня немного, но я выяснил, как заставить расширения работать с IIS 6. Во-первых, необходимо переделать маршрутизацию основы для включения .aspx так, чтобы они были направлены через фильтр ISAPI ASP.NET.

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

, Если Вы перешли к Home.aspx, например, Ваш сайт должен хорошо работать. Но Default.aspx и адрес страницы по умолчанию http:// [веб-сайт] / остановка, работающая правильно. Таким образом, как это фиксируется?

ну, необходимо определить второй маршрут. К сожалению, с помощью Default.aspx, поскольку маршрут не работает правильно:

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

Поэтому, как Вы заставляете это работать? Ну, это - то, где Вам нужен исходный код маршрутизации:

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

, Когда Вы делаете это, Default.aspx и , http:// [веб-сайт] / оба начинает работать снова, я думаю, потому что они становятся успешно отображенными назад на Домашнем контроллере. Таким образом, полное решение:

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

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

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
    }
}

И Ваш сайт должен начать работать просто великолепно под IIS 6. (По крайней мере, это делает на моем ПК.)

И в качестве награды, если Вы используете HTML. ActionLink () на Ваших страницах, Вам не придется изменить никакую другую строку кода всюду по всему сайту. Этот метод заботится о надлежащем наклеивании .aspx расширения контроллера.

14
ответ дан 15 October 2019 в 17:04
поделиться

Так как Вы не можете изменить настройки IIS для отображения .mvc на ASP.NET, можно использовать различное расширение, это уже отображается на ASP.NET. Например, Вы могли использовать {контроллер} .ashx/{действие}, и это должно работать из поля над IIS 6.

7
ответ дан Sean Carpenter 15 October 2019 в 17:04
поделиться

Вы не должны жить с тем расширением, если можно установить фильтр ISAPI на сервере.

В основном Вы направляете подобранные URL к {контроллер} .mvc разнообразие, затем в ASP.NET, Вы переписываете этот URL для удаления .mvc - выполнение этого, Вы не должны определять дополнительные маршруты или представлять .mvc Вашим пользователям.

я записал об этом здесь: http://www.flux88.com/UsingASPNETMVCOnIIS6WithoutTheMVCExtension.aspx

и Steve Sanderson имеет хорошее сообщение здесь также: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

4
ответ дан Ben Scheirman 15 October 2019 в 17:04
поделиться

С IIS6 можно сделать одну из двух вещей:

  1. Установка фильтр ISAPI для отображения URL MVC на ASP.NET
  2. Включают расширение в URL. Например: htp://опция 1 localhost/Home.mvc

Since не доступна на большинстве веб-хостов, необходимо пойти для номера 2.

2
ответ дан Espo 15 October 2019 в 17:04
поделиться

У меня есть подробное пошаговое руководство, но это требует, чтобы Вы использовали isapi_rewrite. Просмотрите его в: http://biasecurities.com/blog/2008/how-to-enable-pretty-urls-with-asp-net-mvc-and-iis6/

-2
ответ дан Jim Geurts 15 October 2019 в 17:04
поделиться

Как упоминалось в этой записи блога Фила Хака, можно настроить URL-адреса без расширений для ASP.NET MVC в IIS 6, используя сопоставления приложений с подстановочными знаками :

  1. В IIS 6 перейдите в свойства конфигурации приложения для веб-приложения ASP.NET MVC.
  2. Нажмите «Вставить ...» в разделе сопоставлений приложений с подстановочными знаками.
  3. Установите для исполняемого файла значение путь к aspnet_isapi.dll (на моем компьютере это c: \ windows \ microsoft.net \ framework \ v2.0.50727 \ aspnet_isapi.dll).
  4. Убедитесь, что НЕ установлен флажок «Убедитесь, что файл существует» и нажмите «ОК».

Однако, как также упоминал Хак, это может сказаться на производительности.

4
ответ дан 28 November 2019 в 21:41
поделиться

Перезапись URL-адресов может помочь вам решить проблему. Реализовал решение, позволяющее развернуть приложение MVC в любой версии IIS даже при использовании виртуального хостинга. http://www.codeproject.com/KB/aspnet/iis-aspnet-url-rewriting.aspx

1
ответ дан 28 November 2019 в 21:41
поделиться

У меня есть образец приложения на IIS6.

Я нашел быстрое и грязное решение. (Грязно, потому что он содержит имя представления по умолчанию с расширением) Он не требует дополнительного маршрута или чего-то особенного. (За исключением того, что ваш маршрут по умолчанию должен иметь формат {controller} .aspx / {action} ...)

Здесь default.aspx

<%@ Page Language="C#"%>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
    HttpContext.Current.RewritePath("~/Home.aspx/index");
    IHttpHandler httpHandler = new MvcHttpHandler();
    httpHandler.ProcessRequest(HttpContext.Current);
}
</script>

Действие по умолчанию для моих примеров приложений было index в домашнем каталоге.

Примечание: я видел этот код в блоге Фила Хаака. Спасибо Брайану Лоу.

0
ответ дан 28 November 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: