2009-12-15 6 views
10

J'utilise MVC .NET dans un environnement distribué avec AAPC et je peut référence HttpPostedFileBase d'un de mes couches web (par exemple Website.MVC), mais je ne peut pas référence HttpPostedFileBase d'un couche séparée (appelons-le OtherLayer.Web).C# - Je ne peux pas faire référence à HttpPostedFileBase

Une idée sur ce que je dois faire pour pouvoir appeler HttpPostedFileBase? Je suis capable d'utiliser HttpPostedFile dans les deux couches - devrais-je simplement l'utiliser à la place?

Les références d'assemblage sont fondamentalement les mêmes - en Website.MVC je:

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; 

Alors que dans mon autre couche j'ai:

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; 

Répondre

26

Assurez-vous que votre projet fait référence à l'ensemble System.Web.Abstractions qui contient le type HttpPostedFileBase.

Aussi confus que cela puisse paraître, le type HttpPostedFile vit dans un ensemble séparé (System.Web) mais le même espace de nommage.

Il est important de se rappeler que les espaces de noms peuvent s'étendre sur des assemblages et que le nom d'un assembly ne dicte pas nécessairement l'espace de noms des types qu'il contient. Il n'y a pas System.Web.Abstractionsespace de noms simplement deux assemblys qui contiennent des types dans l'espace de noms System.Web.

Une fois que vous avez référencé les deux ensembles, vous pouvez référencer les deux types par leurs noms non qualifiés avec cette seule déclaration en utilisant:

using System.Web; 
+0

Pour une raison quelconque, je ne peux pas faire référence à System.Web.Abstractions - je reçois l'erreur: Erreur Le nom du type ou espace de noms « Abstractions » n'existe pas dans l'espace de noms « System.Web » (vous manque un référence d'assemblage?) – Teddy

+0

Salut Teddy, ma réponse à votre commentaire était trop longue donc j'ai mis à jour mon poste ci-dessus à la place :) –

+0

Ok, mon collègue a figuré celui-ci - Je viens d'ajouter la référence à System.Web.Abstractions dans OtherLayer.Web. Je peux référencer HttpPostedFileBase maintenant. Merci pour l'aide! – Teddy

0

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

Merci, Andrew Hare, qui a fait l'affaire, mais je crois que de .Net 4.0 et ainsi de suite, System.Web.Abstractions est obsolète et vous devez ajouter une référence à System.web à la place.

Dans mon cas, ce fut la solution ultime, après que

using System.Web; 

travaillé, et donc, HttpPostedFileBase a été reconnu.

Merci.

Questions connexes