13

CSLAを使用する分散環境でMVC.NETを使用しており、Webレイヤーの1つ(Website.MVCなど)からHttpPostedFileBaseを参照できますが、別のレイヤー(OtherLayer.Webと呼びます)からHttpPostedFileBaseを参照 できません。

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 名前空間はありません。名前空間に型を含む2つのアセンブリだけ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 に答える