Указанный каталог или файл не существует на веб-сервере - PullRequest
1 голос
/ 18 мая 2010

У меня есть гибридное приложение asp.net для веб-форм / mvc, которое я недавно преобразовал в .net 4 с помощью mvc2. Я настроил это приложение для запуска на IIS 7.5 (в Windows 7), и часть веб-форм сайта работает нормально, а часть MVC - нет. Всякий раз, когда я пытаюсь получить доступ к странице, которая должна пройти через механизм маршрутизации, я получаю

Ошибка HTTP 404.0 - не найдена
Ресурс, который вы ищете, был удален, изменилось его имя или временно недоступен.
Модуль IIS Web Core
Карта уведомленийRequestHandler
Обработчик StaticFile
Код ошибки 0x80070002

Я отлаживаю этот веб-сайт через VS2010 (поэтому я настроил его на использование IIS вместо Cassini), и когда я ставлю точку останова в функции Application_Start, она никогда не срабатывает, поэтому маршруты никогда не регистрируются , Когда я помещаю точку останова в функцию Page_Load в одну из программных сторон страницы aspx, она попадает в цель. Похоже, проблема в том, что маршрут не регистрируется.

Чего мне не хватает?

Ответы [ 3 ]

1 голос
/ 30 августа 2010

Из моего опыта работы с ASP.NET MVC, Я видел, что для правильной работы IIS требуется страница Default.aspx. Я использую страницу, которая была включена в шаблон ASP.NET MVC 1. К сожалению, ASP.NET MVC 2 не включает эту страницу (насколько мне известно), поэтому вы должны добавить в свой проект следующее:

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);
        }
    }
}
0 голосов
/ 11 ноября 2017

У меня были веб-формы, и когда я добавил файлы API, мне нужно было также изменить свой файл global.asax. Все, что я сделал, это создал новый пустой API-проект, а затем скопировал файлы. Когда вы добавляете текст в файл global.asax, вы получаете информацию о других нужных вам библиотеках (например, WebApiConfig). Просто следуйте по следу.

0 голосов
/ 18 мая 2010

Я помню, как читал где-то о подобной проблеме, что события Global.asax не запускались. Попробуйте удалить файл Global.asax и добавить его снова (только не забудьте повторно добавить необходимый код маршрутов).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...