“该文件尚未预编译,无法请求”

时间:2009-05-28 08:38:57

标签: web-services iis exception

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

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

相同的标准Web服务(通过.msi安装)适用于其他计算机。

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

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

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

7 个答案:

答案 0 :(得分:2)

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

希望能有所帮助。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

我有相同的消息,但没有网络服务。在我的例子中,它是一个vanilla ASP.NET 2.0 Web应用程序,也碰巧使用AJAX Control Toolkit v1.0.61025。当我追踪它时,我发现我的环境(VS或我的一个插件)从我的web.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.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(因为它有我的开发设置)并且只是在live中继续使用相同的web.config。因为实时web.config有这些缺失的行,所以我一直在编译web.config,它不仅仅是一些app键值。

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

答案 3 :(得分:0)

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

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

并运行:aspnet_regiis -i

希望这有帮助。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

Bin部署Microsoft.WebServices3.dll 3.0.5305.0在Windows Server 2012 R2上运行.Net Framework 4.5+。此选项减轻了安装.Net Framework 3.5和WSE 3.0的需要。