Domanda

Sto usando MVC NET in un ambiente distribuito con CSLA e I possono di riferimento HttpPostedFileBase da uno dei miei strati web (ad esempio Website.MVC), ma I non riesco a riferimento HttpPostedFileBase da uno strato separato (consente di chiamare OtherLayer.Web).

Qualche idea su quello che devo fare per essere in grado di chiamare HttpPostedFileBase? Sono in grado di utilizzare HttpPostedFile in entrambi gli strati - devo solo usare questo al posto

?

I riferimenti di montaggio sono fondamentalmente la stessa - in Website.MVC ho:

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;

considerando che nel mio altro strato ho:

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;
È stato utile?

Soluzione

Assicurati che il progetto fa riferimento l'assemblea System.Web.Abstractions che contiene il HttpPostedFileBase tipo .

Per quanto confuso come può sembrare, il HttpPostedFile tipo vive in un assembly separato (System.Web), ma lo stesso spazio dei nomi esatto.

E 'importante ricordare che gli spazi dei nomi possono estendersi assemblee e il nome di un assembly non necessariamente dettare lo spazio dei nomi dei tipi di contenuti in esso. Non v'è alcun System.Web.Abstractions namespace semplicemente due assembly che contengono tipi nello spazio dei nomi System.Web.

Una volta che avete fatto riferimento entrambi i gruppi è possibile fare riferimento entrambi i tipi con i loro nomi non qualificati con questo singolo istruzione using:

using System.Web;

Altri suggerimenti

  

Assicurati che il progetto fa riferimento l'assemblea System.Web.Abstractions che contiene il tipo di HttpPostedFileBase.

Grazie, Andrew Hare, che ha fatto il trucco, ma credo che da .Net 4.0 e così via, System.Web.Abstractions è deprecato, e si dovrebbe aggiungere il riferimento ai System.Web invece.

Nel mio caso, che era l'ultima soluzione, dopo che

using System.Web;

funzionato, e quindi, HttpPostedFileBase è stato riconosciuto.

Grazie.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top