C# - 我无法引用 HttpPostedFileBase

发布于 2024-08-14 16:37:23 字数 1362 浏览 9 评论 0 原文

我在具有 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;

I am using MVC .NET in a distributed environment with CSLA and I can reference HttpPostedFileBase from one of my web layers (eg Website.MVC), but I cannot reference HttpPostedFileBase from a separate layer (lets call it OtherLayer.Web).

Any idea on what I need to do to be able to call HttpPostedFileBase ?
I am able to use HttpPostedFile in both layers - should I just use this instead?

The assembly references are basically the same - in Website.MVC I have:

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;

Whereas in my other layer i have:

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;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡淡的优雅 2024-08-21 16:37:23

确保您的项目引用包含 HttpPostedFileBase 类型。

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

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

引用这两个程序集后,您可以使用以下单个 using 语句通过它们的非限定名称来引用这两种类型:

using System.Web;

Make sure your project references the System.Web.Abstractions assembly which contains the HttpPostedFileBase type.

As confusing as it may seem, the HttpPostedFile type lives in a separate assembly (System.Web) but the same exact namespace.

It is important to remember that the namespaces can span assemblies and the name of an assembly does not necessarily dictate the namespace of the types contained in it. There is no System.Web.Abstractions namespace simply two assemblies that contain types in the System.Web namespace.

Once you have referenced both assemblies you can reference both types by their unqualified names with this single using statement:

using System.Web;
心不设防 2024-08-21 16:37:23

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

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

就我而言,这是最终的解决方案,在

using System.Web;

起作用之后,因此 HttpPostedFileBase 被识别。

谢谢。

Make sure your project references the System.Web.Abstractions assembly which contains the HttpPostedFileBase type.

Thanks, Andrew Hare, that did the trick, yet I believe that from .Net 4.0 and so on, System.Web.Abstractions is deprecated, and you should add reference to System.web instead.

In my case, that was the ultimate solution, after that

using System.Web;

worked, and therefore, HttpPostedFileBase was recognized.

Thanks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文