Развертывание Asp. Сетевой MVC 2/C# 4,0 приложения на IIS 6

Я получил проблему, мигрирующую с 2008 VS.Net / MVC 1 на VS.NET 2010 (+C# 4.0) / MVC 2

web.config был обновлен, сайт работает хорошо в Cassini, но моя проблема теперь развертывается на IIS 6.

Я обновил веб-сайт для выполнения ASP.Net 4 использования, но независимо от того, что URL, который я пробую, я всегда, имеет 404 ошибки. Это - как будто маршрутизация не была принята во внимание (да, подстановочное отображение было сделано).

Я не понимаю эту путаницу и не мог погуглить ничего интересного... Спасибо за Ваши предложения!

14
задан Bill the Lizard 26 March 2011 в 00:24
поделиться

2 ответа

Хорошо, я получил ответ (спасибо коллеге)

При переходе с ASP.Net 2.0 на ASP.Net4.0, {{1 }} если вы столкнетесь с той же проблемой, затем проверьте Расширение веб-службы , если ASP.Net v4 имеет значение Разрешено .

В моем случае после установки .Net framework 4 это было запрещено.

Уилл и Марк: спасибо за вашу помощь, надеюсь, она поможет другим.

15
ответ дан 1 December 2019 в 12:26
поделиться

Думаю, я знаю, что происходит: в IIS6, помимо сопоставления с подстановочными знаками, вам понадобится документ по умолчанию (Default.aspx), который направляет запросы папок в обработчик MVC.

Один был включен в шаблоны проектов MVC1, но он был удален из MVC2.

Default.aspx :

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="YourNameSpace._Default" %>

<%-- Please do not delete this file. It is used to ensure that ASP.NET MVC is activated by IIS when a user makes a "/" request to the server. --%>

и Default.aspx.cs :

using System.Web;
using System.Web.Mvc;
using System.Web.UI;

namespace YourNameSpace
{
    public partial class _Default : Page
    {
        public void Page_Load(object sender, System.EventArgs e)
        {
            // Change the current path so that the Routing handler can correctly interpret
            // the request, then restore the original path so that the OutputCache module
            // can correctly process the response (if caching is enabled).

            string originalPath = Request.Path;
            HttpContext.Current.RewritePath(Request.ApplicationPath, false);
            IHttpHandler httpHandler = new MvcHttpHandler();
            httpHandler.ProcessRequest(HttpContext.Current);
            HttpContext.Current.RewritePath(originalPath, false);
        }
    }
}

Когда вы говорите «Это как если бы маршрутизация не учитывалась», я подозреваю, что на самом деле это нет, и это ваша проблема.

6
ответ дан 1 December 2019 в 12:26
поделиться
Другие вопросы по тегам:

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