Pergunta

Eu estou usando MVC .NET em um ambiente distribuído com CSLA e eu pode referência HttpPostedFileBase de uma das minhas camadas da web (por exemplo Website.MVC), mas eu não pode HttpPostedFileBase referência a partir de uma camada separada (que chamaremos de OtherLayer.Web).

Qualquer idéia sobre o que eu preciso fazer para ser capaz de chamar HttpPostedFileBase? Eu sou capaz de usar HttpPostedFile em ambas as camadas - devo apenas usar isso em vez

?

As referências de montagem são basicamente os mesmos - em Website.MVC eu tenho:

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;

Considerando que na minha outra camada eu tenho:

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;
Foi útil?

Solução

Certifique-se de suas referências do projeto da montagem System.Web.Abstractions que contém o HttpPostedFileBase tipo .

Como confuso que possa parecer, o HttpPostedFile tipo de vida em um assembly separado (System.Web), mas o mesmo espaço exato.

É importante lembrar que os namespaces podem se estender por assembléias e o nome de um conjunto não necessariamente ditar o namespace dos tipos nele contidas. Não há System.Web.Abstractions namespace simplesmente dois conjuntos que contêm tipos no namespace System.Web.

Depois de ter referenciado ambas as montagens que você pode fazer referência ambos os tipos por seus nomes não qualificados com esta única instrução usando:

using System.Web;

Outras dicas

Certifique-se de suas referências do projeto os System.Web.Abstractions montagem que contém o tipo HttpPostedFileBase.

Obrigado, Andrew Hare, que fez o truque, mas eu acredito que a partir de .Net 4.0 e assim por diante, System.Web.Abstractions está obsoleta, e você deve adicionar referência a System.web vez.

No meu caso, essa foi a solução definitiva, depois disso

using System.Web;

funcionou, e, portanto, HttpPostedFileBase foi reconhecido.

Graças.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top