2012-01-30 32 views
23

Ho un servizio wcf ospitato in un sito Web in IIS e mi sembra di avere questo problema. Nel mio web.config ho questo:Il nome di tipo o spazio dei nomi 'Linq' non esiste nello spazio dei nomi '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> 

Tutti i progetti nella soluzione di destinazione Framework 4.0.

LE: Viene visualizzato l'errore quando si tenta di importare System.Linq;

using System.Linq; 
+3

Inserire il codice in cui si è verificato l'errore. –

+0

FYI, in genere è una cattiva idea utilizzare i "progetti" del sito web per i servizi WCF (o qualsiasi cosa diversa dai semplici siti web). –

+0

in realtà, è un sito web abbastanza semplice :) – gigi

risposta

19

Soluzione: Sembra che la configurazione web dovrebbe essere:

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

Ho questo problema e quella linea è già lì. –

+0

Devi anche aggiungere 'using System.Linq' –

5

Avete un file di codice nel tuo sito sia con Imports System.Linq (VB) o using System.Linq; (C#)?

Sembra la risposta più semplice è che si tratta di un refuso. Forse lo spazio dei nomi dovrebbe essere corretto su System.Data.Linq.

Modifica: System.Linq dovrebbe essere uno spazio dei nomi valido, in quanto "fornisce classi e interfacce che supportano query che utilizzano Language-Integrated Query (LINQ)." (Http://msdn.microsoft.com/en-us/library/system.linq.aspx). Viene anche importato di default nel web.config a livello di sistema.

Quindi, non sono sicuro di cosa sta succedendo qui se non è correlato al mio suggerimento sopra. Forse qualcosa di sbagliato nel tuo computer.config o web.config a livello di sistema?

Modifica 2: Trovo strano che si aggiunga l'assembly System.Core a questo livello. Credo che questo sia l'assembly che include lo spazio dei nomi System.Linq. Forse rimuoverlo sarebbe d'aiuto?

Modifica 3: System.Linq viene importato per impostazione predefinita nel web.config a livello di macchina. Puoi rimuovere la linea nel tuo file di codice.

+0

System.Linq è uno spazio dei nomi ma è in assembly System.Core.dll, a cui ho fatto riferimento, dannazione questo è strano. – gigi

+0

@gigi sì questo è strano. Questo è iniziato come un progetto 3.5 o qualcosa del genere? E, giusto per chiarire: è un progetto Web SITE o un progetto web APPLICATION? – pseudocoder

+0

Rimuovere System.Core non è d'aiuto, è un sito Web e tutti i progetti dell'applicazione sono sviluppati in .net 4.0 (tutti avviati in .net 4.0) – gigi

3

A volte "scompare" solo per il gusto di farlo. Se non ne hai bisogno, basta eliminarlo.

Altrimenti, fare clic con il pulsante destro del mouse sul sito Web in Solution Explorer e aggiungere un riferimento.

0

il problema è non è stato aggiunto

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

nel tag di compilazione.

0

Ho avuto lo stesso errore ma la mia app Web era in esecuzione su framework v2.0. Modificato il pool di applicazioni dalla v2.0 alla v4.0. tutto funzionante ... giorni felici

+0

Hai qualche link o riferimento a questo? – Lizz

1

Non avevo metodi Linq sul mio controller (conteggio, dove, elenco, ecc ...). Aggiunta dello spazio dei nomi:

using System.Linq; 

risolto il problema per me. Forse aiuterà qualcuno in futuro ...

+0

Grazie. Risulta che Visual Studio era troppo stupido per trovare questo spazio dei nomi da solo quando "ctrl +". sull'errore di compilazione. –

0

Ho risolto questo problema aggiungendo il System.Linq spazio dei nomi per gli spazi dei nomi nel file Views\Shared\Web.config, per esempio, come sotto, 2 ° dal basso, al di sopra della WebApplication1 namespace.

Nota: questo è il numero Web.config nella cartella Views e non è "Web.config" principale del sito Web.

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