Что вызвало бы поддельные 404 для страницы ASPX, обслуживаемой IIS? - PullRequest
1 голос
/ 25 февраля 2009

У меня довольно простое приложение ASP.NET, настроенное как проект веб-приложения в Visual Studio. Существует один конкретный файл aspx, называемый invoice.aspx, который IIS отказывается обслуживать. URL-адрес, который я использую, определенно правильный, а другие aspx-страницы из этого каталога загружаются и работают нормально. Но не эта ОДНА страница! Я установил точку останова в Page_Load, чтобы убедиться, что ничего смешного не происходит, но точка останова никогда не достигается. Директива @Page выглядит нормально ... Права доступа к файлам такие же, как и у других файлов в каталоге ... нет ошибок при сборке. Что мне здесь не хватает? Это сбивает меня с толку. Это IIS6 в окне разработки для Windows XP.

Ответы [ 3 ]

2 голосов
/ 25 февраля 2009

Ну, я знал, что найду ответ сам, если напишу об этом ... :)

Оказалось, что это отсутствующая DLL. Зависимый объект не может быть создан, поэтому произошла ошибка. Почему это просто не дало мне ошибку при сборке? Ах, это хороший вопрос! С помощью следующего примера плохого кода:

public partial class Invoice : System.Web.UI.Page
{
    DependentObject SomeObject = new DependentObject();
    private void Page_Load(object sender, System.EventArgs e)
    {
        // Put user code to initialize the page here

    }
}

Если сборка для кода DependentObject отсутствует ... Объект Invoice, следовательно, обслуживаемую страницу, невозможно инициализировать ... сервер не может ее найти ... у нас 404.

Я не считаю себя экспертом в C #, но у меня сложилось впечатление, что приведенный выше код - это то, что вы никогда не должны делать. (верно?) Не уверен, почему компилятор это позволяет.

Перемещение создания исходного объекта в Page_Load приводит к гораздо более полезному исключению отсутствующей сборки.

public partial class Invoice : System.Web.UI.Page
{
    DependentObject SomeObject;
    private void Page_Load(object sender, System.EventArgs e)
    {
        // Put user code to initialize the page here
        SomeObject = new DependentObject();
    }
}

Спасибо, ребята, ценю предложения.

0 голосов
/ 25 февраля 2009

Вы пытались переименовать файл и пытаться получить к нему доступ?

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

0 голосов
/ 25 февраля 2009

Отправка большого количества данных, длинная строка запроса или другой запрос, который может заблокировать встроенный IIS7 urlscan? Если IIS7 блокирует запрос, он отправит ошибку 404.

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