WebResource.axd не найден

Я не могу загрузить файлы script для загрузки на моем сайте. Все остальное отлично работает. Однако я не пробовал ScriptResource.axd.

Я проверял эту проблему как на cassini, так и на IIS7.

Я проверил мой 64-битный 4.0 web.config содержит сопоставление для WebResource.axd.

Мое системное время верное (я слышал, что могут быть проблемы с этим).

Я проверил, что он работает в других проектах, поэтому виновником должно быть мое веб-приложение.

Мое веб-приложение - это веб-приложение 4.0 MVC3.

Мой web.config можно найти здесь.

Эта ошибка убивает меня! Любая помощь будет оценена!

Resource not found

Ответ 1

Ваш файл web.config поражает (это не комплимент): в .NET Framework 4.0 он должен быть намного короче/легче.
Я думаю, что ваш обработчик объявлен в неправильном разделе:

<system.webServer>
    <handlers>
        <add name="WebResource" path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" />
    </handlers>
</system.webServer>

Обычно обработчик WebResource.axd объявляется в разделе "system.web":

<system.web>
    <httpHandlers>
        <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader" validate="True" />
    </httpHandlers>
</system.web>

Ответ 2

Я разрешил подобную проблему, добавив разрешения на чтение для Everyone в папку, где была расположена сборка, содержащая встроенный ресурс. Ясно, что каждый человек чрезмерен, но это может помочь другим исследовать подобные проблемы.

В нашем случае некоторые загруженные ресурсы (так что я знаю, что AssemblyResourceLoader работал), и он работал на одной машине, но не в другой.

Этот ответ на другой вопрос помог мне определить, какие сборки не работают.

Ответ 3

Абсолютно решение: http://www.4guysfromrolla.com/articles/080906-1.aspx когда вы проверяете код рамки .net: https://github.com/Microsoft/referencesource/blob/master/System.Web/Handlers/AssemblyResourceLoader.cs вы можете увидеть трюк: по строке 606

WebResourceAttribute wra = FindWebResourceAttribute(assembly, resourceName);

если сборка не имеет атрибута WebResourceAttribute, она выдает ошибку 404. Вы можете видеть в этой строке

if (resourceStream == null) {
            if (resourceIdentifierPresent) {
                LogWebResourceFailure(decryptedData, exception);
            }
            throw new HttpException(404, SR.GetString(SR.AssemblyResourceLoader_InvalidRequest));
        }

поэтому добавьте атрибут WebResourceAttribute в файл AssemblyInfo.cs следующим образом:

[assembly: WebResource("FullNameSpace.SampleResourceFile.js", "text/javascript")]

Ответ 4

Я решил эту проблему на рабочей машине, снова запущенной aspnet_regiis:

%WINDIR%\Microsoft .NET\Framework\4.xxxx\aspnet_regiis -i

Вероятно, стандартная установка фреймворка 4 пошла не так.

Ответ 5

Бит поздно, но может помочь кому-то в будущем...

Я обнаружил, что это может произойти, если DLL веб-приложения, которое вы доставляете, новее, чем текущее время. Например, вы помещаете свое веб-приложение на рабочий сервер, где время сервера больше, чем на вашей машине разработки.

Получение синхронизации времени сервера с машиной dev помогло мне...

Ответ 6

У меня была эта проблема .axd с Umbraco на производственном сервере, это сводило меня с ума, пока я не узнал, что у сервера была другая безопасность, и при фильтрации запросов расширения .axd и .asmx не были указаны в Допустимые имена файлов по умолчанию, а у хостинговой компании был отключен параметр Разрешить запрещенные имена имен файлов, что отличается от моей машины разработки.