C # - я не могу ссылаться на HttpPostedFileBase - PullRequest
11 голосов
/ 16 декабря 2009

Я использую 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;

Ответы [ 2 ]

28 голосов
/ 16 декабря 2009

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

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

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

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

using System.Web;
0 голосов
/ 27 марта 2016

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

Спасибо, Эндрю Хэйр, который добился цели, но я считаю, что начиная с .Net 4.0 и т. Д., System.Web.Abstractions устарела, и вместо этого следует добавить ссылку на System.web.

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

using System.Web;

сработало, и поэтому HttpPostedFileBase был распознан.

Спасибо.

...