13

我在具有 CSLA 的分布式环境中使用 MVC .NET,我可以从我的一个 Web 层(例如 Website.MVC)引用 HttpPostedFileBase,但我不能从单独的层引用 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;
4

2 回答 2

33

确保您的项目引用System.Web.Abstractions包含该HttpPostedFileBase类型的程序集。

尽管看起来令人困惑,但HttpPostedFile类型存在于单独的程序集 ( System.Web) 中,但名称空间完全相同。

重要的是要记住命名空间可以跨越程序集,并且程序集的名称不一定指示其中包含的类型的命名空间。没有System.Web.Abstractions 命名空间,只有两个程序集包含System.Web命名空间中的类型。

一旦你引用了这两个程序集,你就可以使用这个单一的 using 语句通过它们的非限定名称来引用这两种类型:

using System.Web;
于 2009-12-15T23:16:59.983 回答
0

确保您的项目引用包含 HttpPostedFileBase 类型的 System.Web.Abstractions 程序集。

谢谢,Andrew Hare,这成功了,但我相信从 .Net 4.0 等开始,System.Web.Abstractions 已被弃用,您应该添加对 System.web 的引用。

就我而言,那是最终的解决方案,在那之后

using System.Web;

工作,因此,HttpPostedFileBase 被识别。

谢谢。

于 2016-03-27T17:29:31.160 回答