2009-12-15 8 views
10

Sto usando MVC NET in un ambiente distribuito con CSLA e mi posso riferimento HttpPostedFileBase da uno dei miei strati web (ad esempio Website.MVC), ma non posso riferimento HttpPostedFileBase da un strato separato (chiamiamolo OtherLayer.Web).C# - Non posso riferire HttpPostedFileBase

Qualche idea su cosa devo fare per poter chiamare HttpPostedFileBase? Sono in grado di usare HttpPostedFile in entrambi i livelli - dovrei semplicemente usare questo?

I riferimenti di montaggio sono fondamentalmente la stessa - in Website.MVC ho:

namespace Website.Mvc.Controllers 
{ 
    using System; 
    using System.Collections; 
    using System.Collections.Generic; 
    using System.Web.Mvc; 
    using System.Web; 
    using System.IO; 
    using PetOrganizer.Mvc.Helpers; 
    using TrupanionPetInsurance.Web; 

Mentre nel mio altro strato ho:

namespace OtherLayer.Web 
{ 
    using System; 
    using System.Collections; 
    using System.Collections.Generic; 
    using System.Collections.Specialized; 
    using System.Data; 
    using System.Data.SqlClient; 
    using System.IO; 
    using System.Net.Mail; 
    using System.Text; 
    using System.Text.RegularExpressions; 
    using System.Web; 
    using System.Web.Mvc; 
    using System.Web.Security; 
    using System.Xml; 
    using System.Xml.Serialization; 
    using Csla; 
    using iTextSharp.text; 
    using iTextSharp.text.pdf; 
    using TruDat.BusinessLayer; 
    using TruDat.BusinessLayer.Billing; 
    using TruDat.BusinessLayer.Data; 
    using TruDat.BusinessLayer.Utility; 
    using TrupanionPetInsurance.Web.EmailTemplateParser; 
    using TruDat.BusinessLayer.DataServices; 

risposta

26

Assicurarsi che il progetto fa riferimento l'assemblea System.Web.Abstractions che contiene il tipo HttpPostedFileBase.

Per quanto possa sembrare confuso, il tipo HttpPostedFile risiede in un assieme separato (System.Web) ma lo stesso spazio dei nomi esatto.

È importante ricordare che gli spazi dei nomi possono estendersi su assiemi e il nome di un assieme non determina necessariamente lo spazio dei nomi dei tipi in esso contenuti. Non esiste lo spazio semplicemente due assembly che contengono tipi nello spazio dei nomi System.Web.

Una volta che avete fatto riferimento entrambi i gruppi è possibile fare riferimento entrambi i tipi con i loro nomi non qualificati con questo singolo istruzione using:

using System.Web; 
+0

Per qualche motivo non posso riferire System.Web.Abstractions - ottengo l'errore: Errore Il nome di tipo o spazio 'Astrazioni' non esiste nello spazio dei nomi 'System.Web' (le manca un riferimento all'assemblaggio?) – Teddy

+0

Ciao Teddy, la mia risposta al tuo commento era troppo lunga quindi ho aggiornato il mio post in alto invece :) –

+0

Ok, il mio collaboratore ha capito questo - ho appena aggiunto il riferimento a System.Web.Abstractions in OtherLayer.Web. Ora posso fare riferimento a HttpPostedFileBase. Grazie per l'aiuto! – Teddy

0

Make sure your project references the System.Web.Abstractions assembly which contains the HttpPostedFileBase type.

Grazie, Andrew Hare, che ha fatto il trucco, ma io credo che da .Net 4.0 e così via, System.Web.Abstractions è deprecato e dovresti invece aggiungere riferimento a System.web.

Nel mio caso, che era l'ultima soluzione, dopo che

using System.Web; 

lavorato, e quindi, HttpPostedFileBase è stato riconosciuto.

Grazie.

Problemi correlati