无法在App_Code中编译Linq方法

时间:2010-01-14 17:17:49

标签: asp.net linq iis

我一直在摸索着看起来像年龄的东西。我确定它很容易修复,但我看不到它。

我在App_Code中有一个使用了一点Linq的类。

var siteMap = SiteMapWrapper.BuildSiteMap(true);
var currentTopLevelParent = siteMap.Single(s => s.IsActive);
if (currentTopLevelParent != null)

我在本地开发了这一切,一切正常。当我转移到IIS托管时,同一个类无法编译。我收到了:

does not contain a definition for 'Single' and no extension method 'Single' 
accepting a  first argument of type 'SiteMapWrapper' could be found (are you 
missing a using directive or an assembly reference?)

我确认虚拟目录正在运行.NET 2.0。我还确认在web.config中加载了正确的程序集。

<compilation debug="true">
  <assemblies>
    <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
    <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
    <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
  </assemblies>
</compilation>

我也尝试在web.config中添加名称空间指令,但没有运气。任何人都可以想到其他任何事情吗?

非常感谢。

4 个答案:

答案 0 :(得分:0)

using System.Linq;添加到.cs文件的顶部。

另外,请确保SiteMapWrapper实施IEnumerable<T>

编辑:我没注意到它在本地计算机上运行 确保服务器具有所有从属程序集的正确版本。

答案 1 :(得分:0)

LINQ实际上需要.NET 3.0(3.5更好),而不是2.0。确保AppPool配置正确。

答案 2 :(得分:0)

我想您会发现服务器没有安装3.5。

答案 3 :(得分:0)

将.cs文件的构建操作属性从内容更改为编译

See this article了解更多信息。