Вопрос

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

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

Ссылки на сборку в основном те же - на веб-сайте.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;
Это было полезно?

Решение

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

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

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

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

using System.Web;

Другие советы

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

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

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

using System.Web;

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

Спасибо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top