"Файл не был предварительно скомпилирован и не может быть запрошен"

Я установил набор стандартных веб-сервисов на сервере Windows 2003, IIS 6. Когда я получаю доступ к любому из веб-сервисов через мой браузер, я получаю желтый экран .NET, за исключением:

файл ' /SuperOfficeWebService / контакт.asmx ' не был предварительно скомпилирован и не может быть запрошен.

те же стандартные веб-сервисы (установленные через an .msi) работает на других машинах.

The .asmx-файлы содержат только текст "это файл маркера, сгенерированный инструментом предварительной компиляции, и не должен быть удален!", как и ожидалось.

в папке bin subfolder у меня есть.скомпилированные файлы, которые соответствуют .asmx файлов.

Что может быть причиной сообщения об ошибке? Любые настройки IIS или .NET 2.0, которые не позволяют IIS загружать скомпилированные файлы?

7 ответов


в случае, если кто-то еще ищет решение, у меня была та же проблема. Моя проблема заключалась в том, что я использовал "aspnet_compiler" из неправильной папки framework. Мой проект был создан в VS ' 05 и .net 2.0. Я пытался скомпилировать с "c:\windows\Microsoft .Чистая\рамки\В4.ХХХХ", когда мне нужно скомпилировать с "C:...\В2.xxxx".

надеюсь, что это кому-то поможет.


проблема была решена путем установки " Microsoft Web Service Enhancements v3.0".

его можно скачать здесь: http://www.google.no/search?hl=no&q=microsoft+web+services+enhancements+3.0+download&cad=h


у меня было такое же сообщение, но не ж/web-сервиса. В моем случае это была ваниль. ASP.NET 2.0 веб-приложение, которое также использует AJAX Control Toolkit v1.0.61025. Когда я отследил его, я обнаружил, что моя среда (VS или один из моих аддонов) удалила два элемента из моей сети.config:

  • в теге" assemblies " отсутствовали две строки:

    <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    
  • также отсутствовали эти строки из " system.сеть" раздел:

    <httpHandlers>
      <remove verb="*" path="*.asmx"/>
      <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
    </httpHandlers>
    <httpModules>
      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    </httpModules>
    

Я делаю развертывание XCOPY и использую web.config для управления различиями между разработкой и live (строка подключения и т. д.). После публикации в VS (в папку на моем dev box) я удаляю web.config (поскольку у него есть мои настройки dev) и просто продолжайте использовать тот же веб-сайт.конфигурации в прямых. Потому что живая паутина.у config были эти недостающие строки, я компилировал против интернета.config, который отличался более чем несколькими ключами приложения ценности.

восстановление этих строк в моей среде разработки и переиздания Исправлена проблема. Вау, они снова исчезли из моего VS 2010, мне лучше записать вопрос!


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

перейдите в папку версии .NET, которую вы хотите использовать (т. е.:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727)

и aspnet_regiis -i

надеюсь, что это помогает.


Если вы получаете эту проблему при запуске сценария MSBuild, скорее всего, ваш проект является проектом 2.0 или 3.5, а MSBuild использует компилятор 4.0. Добавить TargetFrameworkMoniker="3.5" на AspNetCompiler директивы.


в нашем случае у нас было это сообщение после повторного создания сайта. Файлы на сайте должны были быть скомпилированы с использованием .NET 4.0.3, а IIS по умолчанию-2.0.5. Нам пришлось изменить версию ASP.NET на сайте> "свойства" > ASP.NET.


Bin развертывание Microsoft.WebServices3.dll 3.0.5305.0 работал для меня на Windows Server 2012 R2 с .Net Framework 4.5+. Этот параметр устраняет необходимость установки .Net Framework 3.5 и WSE 3.0.