Condividi tramite


Note di rilascio di ASP.NET MVC 4

Questo documento descrive il rilascio di ASP.NET MVC 4 .

Note sull'installazione

ASP.NET MVC 4 per Visual Studio 2010 può essere installato dalla home page di ASP.NET MVC 4 usando il programma di installazione della piattaforma Web.

È consigliabile disinstallare le anteprime installate in precedenza di ASP.NET MVC 4 prima di installare ASP.NET MVC 4. È possibile aggiornare il ASP.NET MVC 4 Beta e Release Candidate a ASP.NET MVC 4 senza disinstallare.

Questa versione non è compatibile con le versioni di anteprima di .NET Framework 4.5. È necessario aggiornare separatamente le versioni di anteprima installate di .NET Framework 4.5 alla versione finale prima di installare ASP.NET MVC 4.

ASP.NET MVC 4 può essere installato ed eseguito side-by-side con ASP.NET MVC 3.

Documentazione

La documentazione per ASP.NET MVC è disponibile nel sito Web MSDN all'URL seguente:

https://go.microsoft.com/fwlink/?LinkID=243043

Le esercitazioni e altre informazioni su ASP.NET MVC sono disponibili nella pagina MVC 4 del sito Web ASP.NET (https://www.asp.net/mvc/mvc4).

Support

ASP.NET MVC 4 è completamente supportato. In caso di domande sull'uso di questa versione, è anche possibile pubblicarli nel forum di ASP.NET MVC (https://forums.asp.net/1146.aspx), in cui i membri della community ASP.NET sono spesso in grado di fornire supporto informale.

Requisiti software

I componenti ASP.NET MVC 4 per Visual Studio richiedono PowerShell 2.0 e Visual Studio 2010 con Service Pack 1 o Visual Web Developer Express 2010 con Service Pack 1.

Nuove funzionalità in ASP.NET MVC 4

Questa sezione descrive le funzionalità introdotte nella versione ASP.NET MVC 4.

API Web ASP.NET

ASP.NET MVC 4 include ASP.NET API Web, un nuovo framework per la creazione di servizi HTTP che possono raggiungere un'ampia gamma di client, inclusi browser e dispositivi mobili. ASP.NET'API Web è anche una piattaforma ideale per la creazione di servizi RESTful.

ASP.NET'API Web include il supporto per le funzionalità seguenti:

  • Modello di programmazione HTTP moderno: Accedere e modificare direttamente le richieste e le risposte HTTP nelle API Web usando un nuovo modello a oggetti HTTP fortemente tipizzato. Lo stesso modello di programmazione e la stessa pipeline HTTP sono simmetricamente disponibili nel client tramite il nuovo tipo HttpClient .
  • Supporto completo per le route: ASP.NET'API Web supporta il set completo di funzionalità di route di ASP.NET Routing, inclusi i parametri e i vincoli di route. Usare inoltre convenzioni semplici per eseguire il mapping delle azioni ai metodi HTTP.
  • Negoziazione del contenuto: Il client e il server possono collaborare per determinare il formato corretto per i dati restituiti da un'API Web. ASP.NET'API Web fornisce il supporto predefinito per i formati con codifica XML, JSON e URL del modulo ed è possibile estendere questo supporto aggiungendo formattatori personalizzati o anche sostituendo la strategia di negoziazione del contenuto predefinita.
  • Associazione e convalida del modello: I gestori di associazione di modelli offrono un modo semplice per estrarre dati da varie parti di una richiesta HTTP e convertire tali parti di messaggio in oggetti .NET che possono essere usati dalle azioni dell'API Web. La convalida viene eseguita anche sui parametri di azione in base alle annotazioni dei dati.
  • Filtri: ASP.NET'API Web supporta filtri che includono filtri noti, ad esempio l'attributo [Authorize]. È possibile creare e collegare filtri personalizzati per azioni, autorizzazione e gestione delle eccezioni.
  • Composizione query: Usa l'attributo di filtro [Queryable] su un'azione che restituisce IQueryable per abilitare il supporto per le query sul web API tramite le convenzioni di query OData.
  • Miglioramento della testabilità: Anziché impostare i dettagli HTTP negli oggetti contesto statici, le azioni dell'API Web funzionano con le istanze di HttpRequestMessage e HttpResponseMessage. Creare un progetto di unit test insieme al progetto API Web per iniziare a scrivere rapidamente unit test per la funzionalità dell'API Web.
  • Configurazione basata su codice: ASP.NET configurazione dell'API Web viene eseguita esclusivamente tramite il codice, lasciando puliti i file di configurazione. Usare il modello di localizzatore di servizi fornito per configurare i punti di estendibilità.
  • Supporto migliorato per i contenitori IoC (Inversion of Control): ASP.NET'API Web offre un supporto ottimale per i contenitori IoC tramite un'astrazione migliorata del sistema di risoluzione delle dipendenze
  • Self-host: Le API Web possono essere ospitate nel proprio processo, oltre a IIS, mantenendo comunque tutta la funzionalità di routing e altre caratteristiche dell'API Web.
  • Creare pagine della Guida e test personalizzate: È ora possibile creare facilmente pagine di guida e test personalizzate per le API Web usando il nuovo servizio IApiExplorer per ottenere una descrizione di runtime completa delle API Web.
  • Monitoraggio e diagnostica: ASP.NET API Web offre ora un'infrastruttura di traccia con peso leggero che semplifica l'integrazione con soluzioni di registrazione esistenti, ad esempio System.Diagnostics, ETW e framework di registrazione di terze parti. È possibile abilitare la traccia fornendo un'implementazione ITraceWriter e aggiungendola alla configurazione dell'API Web.
  • Generazione di collegamenti: Usare l'URLHelper dell'API Web ASP.NET per generare collegamenti a risorse correlate nella stessa applicazione.
  • Modello di progetto API Web: Selezionare il nuovo progetto API Web nella procedura guidata Nuovo progetto MVC 4 per iniziare rapidamente a funzionare con ASP.NET API Web.
  • Scaffold: Usare la finestra di dialogo Aggiungi controller per scaffoldare rapidamente un controller API Web basato su un tipo di modello di Entity Framework.

Per altre informazioni su ASP.NET API Web, vedere https://www.asp.net/web-api.

Miglioramenti ai modelli di progetto predefiniti

Il modello usato per creare nuovi progetti ASP.NET MVC 4 è stato aggiornato per creare un sito Web più moderno:

Screenshot della visualizzazione del browser della pagina del nuovo modello di progetto.

Oltre ai miglioramenti cosmetici, il nuovo modello offre funzionalità migliorate. Il modello usa una tecnica denominata rendering adattivo per avere un aspetto ottimale sia nei browser desktop che nei browser per dispositivi mobili senza alcuna personalizzazione.

Screenshot della visualizzazione del browser per dispositivi mobili della versione desktop della pagina del nuovo modello di progetto.

Per visualizzare il rendering adattivo in azione, è possibile usare un emulatore di dispositivi mobili o provare a ridimensionare la finestra del browser desktop per essere più piccola. Quando la finestra del browser diventa sufficientemente piccola, il layout della pagina cambierà.

Modello di progetto per dispositivi mobili

Se si avvia un nuovo progetto e si vuole creare un sito specifico per browser per dispositivi mobili e tablet, è possibile usare il nuovo modello di progetto Applicazione per dispositivi mobili. Si basa su jQuery Mobile, una libreria open source per la creazione di un'interfaccia utente ottimizzata per il tocco:

Screenshot della visualizzazione del browser per dispositivi mobili del modello di progetto dell'applicazione per dispositivi mobili.

Questo modello contiene la stessa struttura dell'applicazione Internet (e il codice del controller è praticamente identico), ma è in stile jQuery Mobile per avere un aspetto ottimale e si comporta bene nei dispositivi mobili basati sul tocco. Per altre informazioni su come strutturare e definire lo stile dell'interfaccia utente per dispositivi mobili, vedere il sito Web del progetto jQuery Mobile.

Se hai già un sito orientato al desktop a cui vuoi aggiungere visualizzazioni ottimizzate per dispositivi mobili o se vuoi creare un singolo sito che gestisce visualizzazioni con stili diversi per browser desktop e per dispositivi mobili, puoi usare la nuova funzionalità Modalità di visualizzazione. Vedere la sezione successiva.

Modalità di visualizzazione

La nuova funzionalità Modalità di visualizzazione consente a un'applicazione di selezionare le visualizzazioni a seconda del browser che effettua la richiesta. Ad esempio, se un browser desktop richiede la home page, l'applicazione potrebbe usare il modello Views\Home\Index.cshtml. Se un browser per dispositivi mobili richiede la home page, l'applicazione potrebbe restituire il modello Views\Home\Index.mobile.cshtml.

I layout e le parziali possono anche essere sottoposti a override per determinati tipi di browser. Per esempio:

  • Se la cartella Views\Shared contiene sia i modelli _Layout.cshtml che _Layout.mobile.cshtml, per impostazione predefinita l'applicazione userà _Layout.mobile.cshtml durante le richieste provenienti dai browser per dispositivi mobili e _Layout.cshtml durante altre richieste.
  • Se una cartella contiene sia _MyPartial.cshtml che _MyPartial.mobile.cshtml, l'istruzione @Html.Partial("_MyPartial") eseguirà il rendering di _MyPartial.mobile.cshtml durante le richieste dai browser per dispositivi mobili e _MyPartial.cshtml durante altre richieste.

Se si desidera creare visualizzazioni, layout o visualizzazioni parziali più specifiche per altri dispositivi, è possibile registrare una nuova istanza DefaultDisplayMode per specificare il nome da cercare quando una richiesta soddisfa determinate condizioni. Ad esempio, è possibile aggiungere il codice seguente al metodo Application_Start nel file Global.asax per registrare la stringa "iPhone" come modalità di visualizzazione che si applica quando il browser Apple iPhone effettua una richiesta:

DisplayModeProvider.Instance.Modes.Insert(0, new
DefaultDisplayMode("iPhone")
{
    ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf
        ("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});

Dopo l'esecuzione di questo codice, quando un browser Apple iPhone effettua una richiesta, l'applicazione userà il layout Views\Shared\_Layout.iPhone.cshtml (se esistente). Per altre informazioni sulla modalità di visualizzazione, vedere ASP.NET funzionalità per dispositivi mobili MVC 4. Le applicazioni che usano DisplayModeProvider devono installare il pacchetto NuGet Fixed DisplayModes . L'aggiornamento ASP.NET Autunno 2012 include il pacchetto NuGet Fixed DisplayModes nei modelli di progetto nuovi. Per informazioni dettagliate sulla correzione, vedere Correzione del bug di memorizzazione nella cache Mobile per ASP.NET MVC 4.

Funzionalità di jQuery Mobile e Caratteristiche per i dispositivi mobili

Per informazioni sulla creazione di applicazioni per dispositivi mobili con ASP.NET MVC 4 usando jQuery Mobile, vedere l'esercitazione ASP.NET MVC 4 funzionalità per dispositivi mobili.

Supporto delle attività per i controller asincroni

È ora possibile scrivere metodi di azione asincroni come singoli metodi che restituiscono un oggetto di tipo Task o Task<ActionResult>.

Per altre informazioni, vedere Uso di metodi asincroni in ASP.NET MVC 4.

AZURE SDK

ASP.NET MVC 4 supporta le versioni 1.6 e successive di Windows Azure SDK.

Migrazioni di database

ASP.NET progetti MVC 4 ora includono Entity Framework 5. Una delle principali funzionalità di Entity Framework 5 è il supporto per le migrazioni di database. Questa funzionalità consente di evolvere facilmente lo schema del database usando una migrazione incentrata sul codice mantenendo i dati nel database. Per altre informazioni sulle migrazioni di database, vedere Aggiunta di un nuovo campo al modello e alla tabella del filmnell'esercitazione Introduzione a ASP.NET MVC 4.

Modello di progetto vuoto

Il modello di progetto MVC Empty è ora completamente vuoto per iniziare da una base completamente pulita. La versione precedente del modello di progetto Vuoto è stata rinominata in Basic.

Aggiungere Controller a qualsiasi cartella del progetto

È ora possibile fare clic con il pulsante destro del mouse e selezionare Aggiungi controller da qualsiasi cartella nel progetto MVC. In questo modo è possibile organizzare i controller in modo più flessibile, tra cui mantenere i controller MVC e API Web in cartelle separate.

Creazione di bundle e minimizzazione

Il framework di aggregazione e minification consente di ridurre il numero di richieste HTTP che devono essere eseguite da una pagina Web combinando singoli file in un unico file in bundle per script e CSS. Può quindi ridurre le dimensioni complessive di tali richieste minimizzando il contenuto del bundle. La minimizzazione può includere attività come l'eliminazione di spazi vuoti per abbreviare i nomi delle variabili fino a ridurre anche i selettori CSS in base alla semantica. I bundle vengono dichiarati e configurati nel codice e sono facilmente referenziati nelle visualizzazioni tramite metodi helper che possono generare un singolo collegamento al bundle o, durante il debug, più collegamenti ai singoli contenuti del bundle. Per altre informazioni, vedere Bundling e Minification.

Abilitazione degli accessi da Facebook e da altri siti tramite OAuth e OpenID

I modelli predefiniti in ASP.NET modello di progetto Internet MVC 4 ora includono il supporto per OAuth e l'account di accesso OpenID usando la libreria DotNetOpenAuth. Per informazioni sulla configurazione di un provider OAuth o OpenID, vedere Supporto OAuth/OpenID per WebForms, MVC e WebPages e la documentazione sulle funzionalità OAuth e OpenID in ASP.NET Web Pages.

Aggiornamento di un progetto MVC 3 ASP.NET a ASP.NET MVC 4

ASP.NET MVC 4 può essere installato side-by-side con ASP.NET MVC 3 nello stesso computer, che consente di scegliere quando aggiornare un'applicazione ASP.NET MVC 3 a ASP.NET MVC 4.

Il modo più semplice per eseguire l'aggiornamento consiste nel creare un nuovo progetto ASP.NET MVC 4 e copiare tutte le visualizzazioni, i controller, il codice e i file di contenuto dal progetto MVC 3 esistente al nuovo progetto e quindi aggiornare i riferimenti all'assembly nel nuovo progetto in modo che corrispondano a qualsiasi modello non MVC incluso assembili in uso. Se sono state apportate modifiche al file Web.config nel progetto MVC 3, è necessario unire tali modifiche anche nel file Web.config nel progetto MVC 4.

Per aggiornare manualmente un'applicazione ASP.NET MVC 3 esistente alla versione 4, eseguire le operazioni seguenti:

  1. In tutti i file Web.config del progetto (ce n'è uno nella radice del progetto, uno nella cartella Views e uno nella cartella Views per ogni area del progetto), sostituire ogni istanza del testo seguente (nota: System.Web.WebPages, Version=1.0.0.0 non viene trovato nei progetti creati con Visual Studio 2012):

    System.Web.Mvc, Version=3.0.0.0
    System.Web.WebPages, Version=1.0.0.0
    System.Web.Helpers, Version=1.0.0.0
    System.Web.WebPages.Razor, Version=1.0.0.0
    

    con il testo corrispondente seguente:

    System.Web.Mvc, Version=4.0.0.0
    System.Web.WebPages, Version=2.0.0.0
    System.Web.Helpers, Version=2.0.0.0
    System.Web.WebPages.Razor, Version=2.0.0.0
    
  2. Nel file di Web.config radice aggiornare l'elemento webPages:Version a "2.0.0.0" e aggiungere una nuova chiave PreserveLoginUrl con il valore "true":

    <appSettings>
      <add key="webpages:Version" value="2.0.0.0" />
      <add key="PreserveLoginUrl" value="true" />
    </appSettings>
    
  3. In Esplora soluzioni fare clic con il pulsante destro del mouse sui riferimenti e scegliere Gestisci pacchetti NuGet. Nel riquadro sinistro selezionare Online\NuGet official package source (Origine pacchetto ufficiale Online\NuGet), quindi aggiornare quanto segue:

    • ASP.NET MVC 4
    • (Facoltativo) jQuery, jQuery Validation e jQuery UI
    • (Facoltativo) Entity Framework
    • (Opzionale) Modernizr
  4. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto e quindi scegliere Scarica progetto. Fare di nuovo clic con il pulsante destro del mouse sul nome e scegliere Modifica NomeProgetto.csproj.

  5. Individuare l'elemento ProjectTypeGuids e sostituire {E53F8FEA-EAE0-44A6-8774-FFD645390401} con {E3E379DF-F4C6-4180-9B81-6769533ABE47}.

  6. Salvare le modifiche, chiudere il file di progetto (con estensione csproj) modificato, fare clic con il pulsante destro del mouse sul progetto e quindi selezionare Ricarica progetto.

  7. Se il progetto fa riferimento a qualsiasi libreria di terze parti compilata usando versioni precedenti di ASP.NET MVC, aprire il file radice Web.config e aggiungere i tre elementi bindingRedirect seguenti nella sezione di configurazione :

    <configuration>
      <!--... elements deleted for clarity ...-->
     
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Helpers" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.WebPages" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    

Modifiche da ASP.NET MVC 4 Release Candidate

Le note sulla versione per ASP.NET MVC 4 Release Candidate sono disponibili qui:

Le principali modifiche apportate a ASP.NET MVC 4 Release Candidate in questa versione sono riepilogate di seguito:

  • Configurazione per controller: I controller Web API di ASP.NET possono essere dotati di un attributo personalizzato che implementa IControllerConfiguration per configurare i propri formattatori, selettori di azioni e binder di parametri. HttpControllerConfigurationAttribute è stato rimosso.
  • Per gestori di messaggi di route: È ora possibile specificare il gestore di messaggi finale nella catena di richieste per una determinata route. Ciò consente il supporto per i framework di ride-along per usare il routing per l'invio ai propri endpoint (non IHttpController).
  • Notifiche di stato:ProgressMessageHandler genera una notifica di stato per entrambe le entità di richiesta caricate e le entità di risposta da scaricare. Usando questo gestore è possibile monitorare lo stato dell'avanzamento del caricamento di un corpo di una richiesta o del download di un corpo di una risposta.
  • Eseguire il push del contenuto: La classe PushStreamContent consente scenari in cui un producer di dati vuole scrivere direttamente nella richiesta o nella risposta (in modo sincrono o asincrono) usando un flusso. Quando PushStreamContent è pronto per accettare i dati, chiama un delegate di azione fornendo il flusso di output. Lo sviluppatore può quindi scrivere nel flusso per tutto il tempo necessario e chiudere il flusso al termine della scrittura. PushStreamContent rileva la chiusura del flusso e completa l'attività asincrona sottostante per scrivere il contenuto.
  • Creazione di risposte di errore: Usare il tipo HttpError per rappresentare in modo coerente le informazioni sugli errori, ad esempio errori di convalida ed eccezioni, pur rispettando l'elemento IncludeErrorDetailPolicy. Usare i nuovi metodi di estensione CreateErrorResponse per creare facilmente risposte di errore con HttpError come contenuto. Il contenuto HttpError è completamente negoziato in base al contenuto.
  • MediaRangeMapping rimosso: Gli intervalli di tipo media sono ora gestiti dal negoziatore predefinito di contenuto.
  • L'associazione predefinita per i parametri di tipo semplice è ora [FromUri]: Nelle versioni precedenti dell'API Web di ASP.NET l'associazione predefinita per i parametri di tipo semplice usava l'associazione di modelli. L'associazione di parametri predefinita per i parametri di tipo semplice è ora [FromUri].
  • La selezione delle azioni rispetta i parametri obbligatori: La selezione dell'azione in ASP.NET API Web ora selezionerà un'azione solo se vengono forniti tutti i parametri obbligatori provenienti dall'URI. Un parametro può essere specificato come facoltativo specificando un valore predefinito per l'argomento nella firma del metodo di azione.
  • Personalizzare le associazioni dei parametri HTTP: Usare ParameterBindingAttribute per personalizzare l'associazione di parametri per un parametro di azione specifico o usare ParameterBindingRules in HttpConfiguration per personalizzare le associazioni di parametri in modo più ampio.
  • Miglioramenti di MediaTypeFormatter: I formattatori hanno ora accesso all'istanza HttpContent completa.
  • Selezione dei criteri di buffering host: Implementare e configurare il servizio IHostBufferPolicySelector in ASP.NET API Web per consentire agli host di determinare i criteri per quando deve essere usato il buffering.
  • Accedere ai certificati client in modo indipendente dall'host: Usare il metodo di estensione GetClientCertificate per ottenere il certificato client fornito dal messaggio di richiesta.
  • Estendibilità della negoziazione del contenuto: Personalizzare la negoziazione del contenuto derivando da DefaultContentNegotiator ed eseguendo l'override di qualsiasi aspetto della negoziazione del contenuto desiderato.
  • Supporto per la restituzione di risposte non accettabili 406: È ora possibile restituire le risposte 406 Non accettabili nell'API Web ASP.NET quando non viene trovato un formattatore appropriato creando un oggetto DefaultContentNegotiator con il parametro excludeMatchOnTypeOnly impostato su true.
  • Legge i dati del modulo come NameValueCollection o JToken: È possibile leggere i dati del modulo nella stringa di query URI o nel corpo della richiesta come NameValueCollection usando rispettivamente i metodi di estensione ParseQueryString e ReadAsFormDataAsync . Analogamente, è possibile leggere i dati del modulo nella stringa di query URI o nel corpo della richiesta come JToken usando rispettivamente i metodi di estensione TryReadQueryAsJson e ReadAsAsync<T> .
  • Miglioramenti a più parti: È ora possibile scrivere un MultipartStreamProvider completamente personalizzato per il tipo di dati multipart MIME che può leggere e presentare il risultato nel modo ottimale per l'utente. È anche possibile associare un passaggio di post-elaborazione su MultipartStreamProvider che consente all'implementazione di eseguire qualsiasi post-elaborazione desiderata nelle parti del corpo multipart MIME. Ad esempio, l'implementazione MultipartFormDataStreamProvider legge le parti dei dati del modulo HTML e le aggiunge a una NameValueCollection in modo che siano facili da ottenere dal chiamante.
  • Miglioramenti alla generazione dei collegamenti:UrlHelper non dipende più da HttpControllerContext. È ora possibile accedere a UrlHelper da qualsiasi contesto in cui è disponibile HttpRequestMessage .
  • Modifica dell'ordine di esecuzione del gestore messaggi: I gestori di messaggi vengono ora eseguiti nell'ordine in cui sono configurati anziché in ordine inverso.
  • Helper per collegare i gestori di messaggi: Nuovo HttpClientFactory in grado di collegare DelegatingHandlers e creare un HttpClient con la pipeline desiderata pronta per l'uso. Fornisce anche funzionalità per collegare i gestori interni alternativi (l'impostazione predefinita è HttpClientHandler), oltre a eseguire il collegamento quando si usa HttpMessageInvoker o un altro DelegatingHandler invece di HttpClient come top-invoker.
  • Supporto per le reti CDN in Ottimizzazione Web ASP.NET: ASP.NET Ottimizzazione Web offre ora il supporto per i percorsi alternativi della rete CDN che consentono di specificare per ogni bundle un URL aggiuntivo che punta a quella stessa risorsa in una rete per la distribuzione di contenuti. Il supporto delle reti CDN consente di avvicinare geograficamente gli script e i bundle di stile ai consumer finali delle applicazioni Web. Le app di produzione devono implementare un fallback quando la rete CDN non è disponibile. Testare il fallback.
  • ASP.NET route e configurazioni dell'API Web spostate nel metodo statico WebApiConfig.Register che può essere riusato nel codice di test. Le API Web ASP.NET venivano aggiunte in RouteConfig.RegisterRoutes insieme alle route MVC standard. Le route e la configurazione predefinite dell'API Web ASP.NET vengono ora gestite in un metodo WebApiConfig.Register separato per facilitare il test.

Problemi noti e modifiche di rilievo

  • La versione RC e RTM di ASP.NET MVC 4 restituisce erroneamente visualizzazioni desktop memorizzate nella cache quando devono essere restituite le visualizzazioni per dispositivi mobili.

  • Modifiche di rilievo nel motore di visualizzazione Razor. I tipi seguenti sono stati rimossi da System.Web.Mvc.Razor:

    • ModelSpan
    • MvcVBRazorCodeGenerator
    • MvcCSharpRazorCodeGenerator
    • MvcVBRazorCodeParser

    Sono stati rimossi anche i metodi seguenti:

    • MvcCSharpRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
    • MvcWebPageRazorHost.DecorateCodeGenerator(System.Web.Razor.Generator.RazorCodeGenerator)
    • MvcVBRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
  • Quando WebMatrix.WebData.dll è inclusa nella directory /bin di un'applicazione ASP.NET MVC 4, gestisce l'URL per l'autenticazione basata su form. L'aggiunta dell'assembly WebMatrix.WebData.dll all'applicazione (ad esempio, selezionando "ASP.NET web pages con sintassi Razor" quando si usa la finestra di dialogo Aggiungi dipendenze distribuibili) sovrascriverà il reindirizzamento del login di autenticazione a /account/logon anziché a /account/login come previsto dal controller account MVC predefinito di ASP.NET. Per evitare questo comportamento e usare l'URL specificato già nella sezione di autenticazione di web.config, è possibile aggiungere un'appSetting denominata PreserveLoginUrl e impostarla su true:

    <appSettings>
        <add key="PreserveLoginUrl" value="true"/>
    </appSettings>
    
  • La gestione pacchetti NuGet non viene installata quando si tenta di installare ASP.NET MVC 4 per le installazioni affiancate di Visual Studio 2010 e Visual Web Developer 2010. Per eseguire Visual Studio 2010 e Visual Web Developer 2010 side-by-side con ASP.NET MVC 4, è necessario installare ASP.NET MVC 4 dopo l'installazione di entrambe le versioni di Visual Studio.

  • La disinstallazione di ASP.NET MVC 4 ha esito negativo se i prerequisiti sono già stati disinstallati. Per disinstallare ASP.NET MVC 4 è necessario disinstallare ASP.NET MVC 4 prima di disinstallare Visual Studio.

  • L'installazione di ASP.NET MVC 4 compromette le applicazioni ASP.NET MVC 3 RTM. ASP.NET applicazioni MVC 3 create con la versione RTM (non con la versione ASP.NET MVC 3 Tools Update ) richiedono le modifiche seguenti per lavorare affiancate con ASP.NET MVC 4. La compilazione del progetto senza apportare questi aggiornamenti comporta errori di compilazione.

    Aggiornamenti necessari

    1. Nel file di Web.config radice aggiungere una nuova <voce appSettings> con la chiave webPages:Version e il valore 1.0.0.0.

      <appSettings>
          <add key="webpages:Version" value="1.0.0.0"/>
          <add key="ClientValidationEnabled" value="true"/>
          <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
      </appSettings>
      
    2. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto e quindi scegliere Scarica progetto. Fare di nuovo clic con il pulsante destro del mouse sul nome e scegliere Modifica NomeProgetto.csproj.

    3. Individuare i riferimenti dell'assembly seguenti:

      <Reference Include="System.Web.WebPages"/> 
      <Reference Include="System.Web.Helpers" />
      

      Sostituirli con quanto segue:

      <Reference Include="System.Web.WebPages, Version=1.0.0.0,
      Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "/> 
      <Reference Include="System.Web.Helpers, Version=1.0.0.0,
      Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
      
    4. Salvare le modifiche, chiudere il file di progetto (con estensione csproj) modificato, quindi fare clic con il pulsante destro del mouse sul progetto e selezionare Ricarica.

  • La modifica di un progetto ASP.NET MVC 4 alla destinazione 4.0 dalla versione 4.5 non aggiorna il riferimento all'assembly EntityFramework: Se si modifica un progetto ASP.NET MVC 4 come destinazione 4.0 dopo la destinazione 4.5, il riferimento all'assembly EntityFramework punterà comunque alla versione 4.5. Per risolvere questo problema, disinstallare e reinstallare il pacchetto NuGet EntityFramework.

  • 403 Accesso negato quando si esegue un'applicazione MVC 4 ASP.NET in Azure dopo la modifica alla destinazione 4.0 dalla versione 4.5: Se si modifica un progetto ASP.NET MVC 4 come destinazione 4.0 dopo la destinazione 4.5 e quindi si esegue la distribuzione in Azure, è possibile che venga visualizzato un errore 403 Accesso negato in fase di esecuzione. Per risolvere questo problema, aggiungere quanto segue al web.config: <modules runAllManagedModulesForAllRequests="true" />

  • Visual Studio 2012 si arresta in modo anomalo quando si digita un '' in un valore letterale stringa in un file Razor. Per risolvere il problema, immettere prima la virgoletta di chiusura del letterale di stringa.

  • La navigazione su "Account/Gestione" nel modello Internet genera un errore di esecuzione per le lingue CHS, TRK e CHT. Per risolvere il problema, modificare la pagina per separare @User.Identity.Name, inserendolo come unico contenuto all'interno del tag <strong>.

  • I provider Google e LinkedIn non sono supportati nei siti Web di Azure. Usare provider di autenticazione alternativi durante la distribuzione in Siti Web di Azure.

  • Quando si usa UriPathExtensionMapping con IIS 8 Express/IIS, si riceveranno errori 404 Not Found quando si tenta di usare l'estensione. Il gestore di file statici interferisce con le richieste alle API Web che usano UriPathExtensionMappings. Impostare runAllManagedModulesForAllRequests=true in web.config per risolvere il problema.

  • Il metodo Controller.Execute non viene più chiamato. Tutti i controller MVC vengono ora sempre eseguiti in modo asincrono.