C # - Я не могу ссылаться на HttpPostedFileBase
-
19-09-2019 - |
Вопрос
Я использую 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 был распознан.
Спасибо.