2012-01-30 191 views
23

我有一个在IIS中的网站中托管的wcf服务,我似乎遇到此问题。 在我的web.config我有这样的:命名空间'System'中不存在类型或名称空间名称'Linq'

<system.web> 
     <compilation> 
      <assemblies> 
       <add assembly="System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
       <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
       <add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/> 
       <add assembly="System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       <add assembly="System.Data.DataSetExtensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/> 
       <add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies> 
     </compilation> 
    </system.web> 

在溶液中的目标框架4.0的所有项目。 LE:当我尝试导入System.Linq时出现错误;

using System.Linq; 
+3

请将代码发布到发生错误的位置。 – 2012-01-30 21:05:27

+0

仅供参考,它通常是一个坏主意,使用WCF服务(或除相当简单的网站除外)网站“项目”。 – 2012-01-30 21:11:09

+0

实际上,这是一个相当简单的网站:) – gigi 2012-01-30 21:13:06

回答

19

解决方案:看来web配置应该是:

<system.web> 
    <compilation debug="true" targetFramework="4.0"/> 
</system.web> 
+10

我有这个问题,那行已经存在。 – 2014-04-04 20:47:48

+0

您还需要添加'使用System.Linq' – 2017-07-24 09:17:26

5

你在您的网站或者Imports System.Linq(VB)或using System.Linq;(C#)有一个代码文件?

看起来像最简单的答案是,它是一个错字。也许这个命名空间应该被修正为System.Data.Linq

编辑: System.Linq应该是一个有效的命名空间,因为它“提供支持使用语言集成查询(LINQ)的查询的类和接口”。 (http://msdn.microsoft.com/en-us/library/system.linq.aspx)。它也默认导入到系统级web.config中。

所以,不知道这里发生了什么,如果它与我上面的建议无关。可能是你的machine.config或系统级别的web.config有问题?

编辑2: 我觉得奇怪的是你在这个级别添加System.Core程序集。我相信这是包含System.Linq命名空间的程序集。也许删除它会有所帮助?

编辑3: System.Linq默认情况下导入到机器级web.config中。您可以删除代码文件中的行。

+0

System.Linq是一个命名空间,但它在System.Core.dll程序集中,我引用它,该死的很奇怪。 – gigi 2012-01-30 21:28:45

+0

@吉吉是啊,这是一个奇怪的。这是从3.5项目开始的吗?而且,只是澄清一下:它是一个Web SITE项目或Web APPLICATION项目吗? – pseudocoder 2012-01-30 21:31:14

+0

删除System.Core程序,没有帮助,这是一个网站,所有来自应用程序的项目.NET 4.0开发(一切都开始于.NET 4.0) – gigi 2012-01-30 21:33:53

3

有时它“消失”只是为了它的乐趣。如果你不需要它,只需删除它。

否则在解决方案资源管理器中右键单击您的网站并添加对其的引用。

0

问题是你没有在编译标记添加

debug="true|false" targetFramework="4.0" 

0

我有相同的错误,但我的web应用程序运行在框架v2.0。将我的应用程序池从v2.0更改为v4.0。所有的工作......幸福的日子

+0

你有这个任何链接或引用? – Lizz 2014-02-19 00:03:29

1

我的控制器上没有Linq方法(Count,Where,toList等...)。添加命名空间:

using System.Linq; 

解决了我的问题。也许将在未来帮助别人...

+0

谢谢。事实证明,当“ctrl +”时,Visual Studio太笨了,无法自己找到这个命名空间。关于编译错误。 – 2016-10-03 07:19:33

0

我解决了这个问题,通过将System.Linq命名空间添加到Views\Shared\Web.config文件中的命名空间,例如,如下所示,从底部第二个,在WebApplication1命名空间之上。

请注意,这是位于Views文件夹中的Web.config,并不是网站的主“Web.config”。

<system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
      <add namespace="System.Web.Mvc" /> 
      <add namespace="System.Web.Mvc.Ajax" /> 
      <add namespace="System.Web.Mvc.Html" /> 
      <add namespace="System.Web.Optimization"/> 
      <add namespace="System.Web.Routing" /> 
      <add namespace="System.Linq" /> 
      <add namespace="WebApplication1" /> 
     </namespaces> 
    </pages> 
</system.web.webPages.razor> 
相关问题