2012-01-30 243 views
23

Tengo un servicio wcf alojado en un sitio web en IIS y parece que tengo este problema. En mi web.config tengo unas pocas cosas:El tipo o el nombre del espacio de nombres 'Linq' no existe en el espacio de nombres 'Sistema'

<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> 

Todos los proyectos en el marco de destino solución 4.0.

LE: Aparece el error cuando intento importar System.Linq;

using System.Linq; 
+3

Indique el código donde se produce el error. –

+0

Para su información, generalmente es una mala idea usar los "proyectos" del sitio web para los servicios de WCF (o cualquier otra cosa que no sean sitios web bastante simples). –

+0

en realidad, es un sitio web bastante simple :) – gigi

Respuesta

19

Solución: Parece que la configuración de la tela debe ser:

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

Tengo este problema y esa línea ya está allí. –

+0

También necesita agregar 'using System.Linq' –

5

¿Tiene un archivo de código en su sitio, ya sea con Imports System.Linq (VB) o using System.Linq; (C#)?

Parece que la respuesta más simple es que se trata de un error tipográfico. Tal vez el espacio de nombres debe corregirse al System.Data.Linq.

Editar: System.Linq debe ser un espacio de nombre válido, ya que "proporciona clases e interfaces que admiten consultas que utilizan Language-Integrated Query (LINQ)". (http://msdn.microsoft.com/en-us/library/system.linq.aspx). También se importa por defecto en el nivel del sistema web.config.

Por lo tanto, no estoy seguro de lo que está sucediendo aquí si no está relacionado con mi sugerencia anterior. Tal vez hay algo mal en su machine.config o en el nivel del sistema web.config?

Editar 2: Me resulta extraño que agregue el ensamblado System.Core en este nivel. Creo que este es el ensamblado que incluye el espacio de nombres System.Linq. Tal vez quitarlo ayudaría?

Editar 3: System.Linq se importa de forma predeterminada en el nivel de la máquina web.config. Puede eliminar la línea en su archivo de código.

+0

System.Linq es un espacio de nombres pero está en el ensamblado System.Core.dll, al que hice referencia, maldita sea, esto es extraño. – gigi

+0

@gigi sí, esta es una extraña. ¿Esto comenzó como un proyecto de 3.5 o algo así? Y, solo para aclarar: ¿Es un proyecto web SITE o un proyecto web APPLICATION? – pseudocoder

+0

Eliminando System.Core no está ayudando, es un sitio web y todos los proyectos de la aplicación están desarrollados en .NET 4.0 (todo comenzó en .net 4.0) – gigi

3

A veces "desaparece" solo por diversión. Si no lo necesitas, simplemente elimínalo.

Más a la derecha haga clic en su sitio web en el explorador de soluciones y añada una referencia al mismo.

0

el problema es que no agrega

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

en etiqueta de compilación.

0

Tuve el mismo error pero mi aplicación web se ejecutaba en framework v2.0. Cambié mi grupo de aplicaciones de v2.0 a v4.0. todos trabajando ... días felices

+0

¿Tiene algún enlace o referencia a esto? – Lizz

1

No tenía ningún método Linq en mi controlador (Count, Where, toList, etc ...). Agregar el espacio de nombres:

using System.Linq; 

solucionó el problema. Tal vez va a ayudar a alguien en el futuro ...

+0

Gracias. Resulta que Visual Studio era demasiado tonto para encontrar este espacio de nombres por sí mismo cuando "ctrl +". en el error de compilación. –

0

He resuelto este problema mediante la adición del espacio de nombres System.Linq a los espacios de nombres en el archivo Views\Shared\Web.config, por ejemplo, de la siguiente manera, segunda desde la parte inferior, por encima de la WebApplication1 espacio de nombres.

Nota, esto está en el Web.config en la carpeta Views y no es el sitio web principal de '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> 
Cuestiones relacionadas