Quantcast
Channel: Software Development and Infrastructure in the Cloud » Azure
Viewing all articles
Browse latest Browse all 9

Migrazione da MVC4 beta a MVC4 RC

$
0
0

Appena Microsoft ha rilasciato la nuova versione MVC4 Release Candidate abbiamo migrato due dei nostri progetti WebApi sviluppati con MVC4 Beta.

Grazie all’ aiuto di NuGet l’aggiornamento delle reference nel progetto è abbastanza facile.

Di seguito i passi che ho seguito per l’ aggiornamento:

  • Per sicurezza ho eliminato le seguenti Reference dal vostro progetto WebApi:
    • System.Net.Http
    • System.Net.Http.Formatting
    • System.Web.Helpers
    • System.Web.Http
    • System.Web.Http.WebHost
    • System.Web.Mvc
    • System.Web.Optimization
    • System.Web.Providers
    • System.Web.Razor
    • System.Web.WebPages
    • System.Web.WebPages.Deployment
    • System.Web.WebPages.Razor
  • Dal package manager console di NuGet ho selezionato il progetto WebApi sul quale applicare l’installazione dei nuovi pacchetti (Default project).
  • Con il comando “Install-Package <nome pacchetto>” ho installato i seguenti pacchetti:
    • Microsoft.AspNet.Mvc
    • Microsoft.AspNet.Providers
    • Microsoft.AspNet.Providers.Core
    • Microsoft.AspNet.Razor
    • Microsoft.AspNet.Web.Optimization -Pre
    • Microsoft.AspNet.WebApi
    • Microsoft.AspNet.WebApi.Client
    • Microsoft.AspNet.WebApi.Core
    • Microsoft.AspNet.WebApi.WebHost
    • Microsoft.AspNet.WebPages
  • A questo punto la compilazione è fallita perché nella versione RC sono cambiate le seguenti cose:
    • HttpResponseMessage: se avete usato HttpResponseMessage<T> ora dovrete cambiare in HttpResponseMessage.
    • Se la vostra Action nel Controller restituisce un HttpResponseMessage, nel metodo dovrete costruire la risposta con la seguente chiamata: Request.CreateResponse(HttpStatusCode statusCode, object objToReturn)
    • Se la vostra Action effettua il throw di HttpResponseException la sintassi diventa: throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.InternalServerError))
    • Se avete usato il Json.Net formatter come custom formatter nel vostro progetto, ora potete eliminarlo in quanto nella versione RC viene utilizzato come default formatter, quindi se volete ancora usare l’ opzione IsoDateTimeConverter per non avere problemi con le date, dovrete specificare tale opzione nel GlobalConfiguration all’interno del Global.asax.cs:

[cc lang=”csharp”]
var formatter = GlobalConfiguration.Configuration.Formatters.Where(f => f.SupportedMediaTypes.Any(v => v.MediaType.Equals(“application/json”,
StringComparison.CurrentCultureIgnoreCase))).FirstOrDefault() as JsonMediaTypeFormatter;
if (formatter != null)
{
formatter.SerializerSettings = new JsonSerializerSettings()
{
NullValueHandling = NullValueHandling.Ignore,
Converters = new JsonConverter[] { new IsoDateTimeConverter() }
};
}
[/cc]

  • Problemi anche con Dependency Injection avendo usato Unity.WebApi con la versione MVC4 Beta, in quanto la nuova RC non supporta più questo pacchetto. Per ovviare a questo problema bisogna implementare un custom resolver e usare Microsoft.Practicies.Unity invece di Unity.WebApi. Per questo vi rimando a questo link, in fondo alla discussione trovate un altro link che vi rimanda ad una pagina di download di un progetto di esempio. I pacchetti NuGet che ho scaricato nel progetto sono “CommonServiceLocator” e “Unity”, senza prenderli dall’installazione dell’enterprise library 5.0.
  • Qui un link di riferimento.

In contemporanea abbiamo anche aggiornato l’ SDK di Azure alla versione 1.7 6 June 2012. Tutto funziona correttamente su Azure e le nostre WebApi sono completamente aggiornate!!!

Spero che la mia esperienza possa essere di aiuto a qualcuno!

 

 


Viewing all articles
Browse latest Browse all 9

Trending Articles