Подтвердить что ты не робот

С# - я не могу ссылаться на HttpPostedFileBase

Я использую MVC.NET в распределенной среде с CSLA, а я может ссылаться на HttpPostedFileBase из одного из моих веб-слоев (например, Website.MVC), но я не могу ссылаться на HttpPostedFileBase с отдельного слоя (позволяет называть его OtherLayer.Web).

Любая идея о том, что мне нужно сделать, чтобы иметь возможность вызвать HttpPostedFileBase? Я могу использовать HttpPostedFile в обоих слоях - должен ли я просто использовать это вместо?

Ссылки на сборку в основном одинаковые - в Website.MVC У меня есть:

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;

В то время как в моем другом слое у меня есть:

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;
4b9b3361

Ответ 1

Убедитесь, что ваш проект ссылается на сборку System.Web.Abstractions, которая содержит HttpPostedFileBase.

Как ни странно, тип HttpPostedFile живет в отдельной сборке (System.Web), но в том же точном пространстве имен.

Важно помнить, что пространства имен могут охватывать сборки, а имя сборки необязательно диктует пространство имен содержащихся в нем типов. Нет пространства имен System.Web.Abstractions просто две сборки, которые содержат типы в пространстве имен System.Web.

После того, как вы указали обе сборки, вы можете ссылаться на оба типа по их неквалифицированным именам с помощью этого одноразового использования:

using System.Web;

Ответ 2

Убедитесь, что ваш проект ссылается на сборку System.Web.Abstractions, которая содержит тип HttpPostedFileBase.

Спасибо, Andrew Hare, что сделал трюк, но я считаю, что из .Net 4.0 и т.д. System.Web.Abstractions устарела, и вместо этого вы должны добавить ссылку на System.web.

В моем случае это было окончательное решение, после этого

using System.Web;

и, следовательно, HttpPostedFileBase был признан.

Спасибо.