Я получил проблему, мигрирующую с 2008 VS.Net / MVC 1 на VS.NET 2010 (+C# 4.0) / MVC 2
web.config был обновлен, сайт работает хорошо в Cassini, но моя проблема теперь развертывается на IIS 6.
Я обновил веб-сайт для выполнения ASP.Net 4 использования, но независимо от того, что URL, который я пробую, я всегда, имеет 404 ошибки. Это - как будто маршрутизация не была принята во внимание (да, подстановочное отображение было сделано).
Я не понимаю эту путаницу и не мог погуглить ничего интересного... Спасибо за Ваши предложения!
Хорошо, я получил ответ (спасибо коллеге)
При переходе с ASP.Net 2.0 на ASP.Net4.0, {{1 }} если вы столкнетесь с той же проблемой, затем проверьте Расширение веб-службы , если ASP.Net v4 имеет значение Разрешено .
В моем случае после установки .Net framework 4 это было запрещено.
Уилл и Марк: спасибо за вашу помощь, надеюсь, она поможет другим.
Думаю, я знаю, что происходит: в 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);
}
}
}
Когда вы говорите «Это как если бы маршрутизация не учитывалась», я подозреваю, что на самом деле это нет, и это ваша проблема.