【问题标题】:"The file has not been pre-compiled, and cannot be requested"“该文件尚未预编译,无法请求”
【发布时间】:2009-05-28 08:38:56
【问题描述】:

我在 Windows 2003、IIS 6 服务器上安装了一组标准 Web 服务。当我通过浏览器访问任何网络服务时,我会看到一个 .NET 黄色屏幕,但以下情况除外:

“/SuperOfficeWebService/Contact.asmx”文件未预编译,无法请求。

相同的标准 Web 服务(通过 .msi 安装)可在其他机器上运行。

.asmx 文件仅包含文本“这是由预编译工具生成的标记文件,不应删除!”,如预期的那样。

在 bin\ 子文件夹中,我有与 .asmx 文件匹配的 .compiled 文件。

什么可能导致错误消息?是否有任何 IIS 设置或 .NET 2.0 设置阻止 IIS 加载已编译的文件?

【问题讨论】:

    标签: web-services iis exception


    【解决方案1】:

    如果其他人仍在寻找解决方案,我遇到了同样的问题。我的问题是我使用了错误框架文件夹中的“aspnet_compiler”。我的项目是在 VS'05 和 .net 2.0 中创建的。当我需要从“c:...\v2.xxxx”进行预编译时,我试图从“c:\windows\Microsoft .NET\Framework\v4.xxxx”进行预编译。

    希望对某人有所帮助。

    【讨论】:

      【解决方案2】:

      通过安装“Microsoft Web Service Enhancements v3.0”解决了这个问题。

      可以在这里下载:http://www.google.no/search?hl=no&q=microsoft+web+services+enhancements+3.0+download&cad=h

      【讨论】:

      • MS WS enhencements 3.0 是什么意思?
      【解决方案3】:

      我收到了同样的信息,但没有网络服务。就我而言,它是一个普通的 ASP.NET 2.0 Web 应用程序,它也恰好使用 AJAX Control Toolkit v1.0.61025。当我追踪它时,我发现我的环境(VS 或我的插件之一)从我的 web.config 中删除了两个元素:

      • “程序集”标签缺少两行:

        <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.web”部分中也缺少这些行:

        <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 来控制开发和实时之间的差异(连接字符串等)。在 VS 中发布(到我的开发箱上的文件夹)后,我删除了 web.config(因为它有我的开发设置)并继续使用相同的 web.config。因为实时 web.config 缺少这些行,所以我一直在针对 web.config 进行编译,该 web.config 的不同之处不仅仅是几个应用程序键值。

      在我的开发环境中恢复这些行并重新发布解决了该问题。哇,他们刚刚从我的 VS 2010 中消失了,我最好记录一个问题!

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,并通过运行以下命令将正确的编译器与 IIS 重新关联来修复它。

        转到您要使用的 .NET 版本的文件夹(即:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727

        然后运行:aspnet_regiis -i

        希望这会有所帮助。

        【讨论】:

          【解决方案5】:

          如果您在运行 MSBuild 脚本时遇到此问题,则很可能您的项目是 2.0 或 3.5 项目,并且 MSBuild 使用的是 4.0 编译器。将TargetFrameworkMoniker="3.5" 添加到您的AspNetCompiler 指令中。

          【讨论】:

            【解决方案6】:

            在我们的案例中,我们在重新创建网站后收到了此消息。该站点上的文件必须使用 .NET 4.0.3 编译,IIS 默认为 2.0.5。我们必须在 Site> Properties> ASP.NET 中更改 ASP.NET 版本。

            【讨论】:

              【解决方案7】:

              部署 Microsoft.WebServices3.dll 3.0.5305.0 的 Bin 在带有 .Net Framework 4.5+ 的 Windows Server 2012 R2 上为我工作。此选项减少了安装 .Net Framework 3.5 和 WSE 3.0 的需要。

              【讨论】:

                猜你喜欢
                • 2013-08-18
                • 1970-01-01
                • 2010-10-10
                • 2010-09-29
                • 2019-05-19
                • 2018-09-26
                • 2019-08-11
                • 1970-01-01
                • 2021-10-24
                相关资源
                最近更新 更多