Abbiamo già visto come configurare la propria farm SharePoint 2013 per sviluppare applicazioni tramite il nuovo App-Model. Se volete vedere tutti i passi di questa configurazione, fate riferimento a questo post:
http://www.peppedotnet.it/Blog/ConfigureDevelopmentEnvironmentForSharePoint2013Apps.aspx

C'è una cosa però su cui porre attenzione quando si effettua questa configurazione: va controllato se la web application su cui intendiamo installare le nostre App è stata creata (o meno) specificando un hostname.
In questi giorni avevo delle demo per un nostro cliente ed ho rifatto una delle mie macchine virtuali, creando una nuova web application in questo modo:

Creazione di una web application con hostname

Come vedete ho specificato l'host header "sp2013" per la nuova web application.
Fatto questo ho provato a re-installare tutte le mie App d'esempio che in fase di installazione non mi hanno dato alcun problema, ma cercando di eseguirle dal browser mi tornavano tutte un errore 404.

Che succede? Ecco qui tutti i passi della nostra richiesta:

  • la richiesta arriva ad IIS prima (non all'App Management Service di SharePoint 2013),
  • il web server vede che questa richiesta non ha l'host header specificato durante la creazione della web application SharePoint che dovrebbe rispondere,
  • il web server quindi risponde tramite il "default web site", che è l'unico sito che risponde sulla porta 80, ma che non conosce la pagina richiesta per la visualizzazione della mia App,
  • il web server torna un errore 404, senza chiamare mai in causa SharePoint.

Quindi, come avrete capito, il problema è proprio che SharePoint (con il suo App Management Service) non viene richiamato per smazzarsi il redirect alla posizione corretta in cui è installata l'App.

Per risolvere questo problema bisogna applicare un trick particolare alla vostra farm SharePoint. Bisogna infatti creare una web application vuota (senza creare anche la relativa site collection), sulla stessa porta della prima web application (nel mio caso era la porta 80) e senza specificare alcun host header.

Creazione di una web application senza host header per fare da redirect alle App SharePoint 2013

Come vi dicevo, per questa web application non è necessario creare anche una site collection. E' una web application vuota che farà solo da ponte.

Evitare di creare la site collection in questa nuova web application

In questo modo il default web site e il sito IIS relativo alla nostra prima web application verranno automaticamente stoppati e tutte le richieste passeranno prima dalla nostra nuova web application che fa da ponte.

Situazione dei siti IIS dopo questa operazione

Una volta creata questa web application vuota, tutte le mie App hanno incominciato a funzionare come si deve. Niente più errori 404!
Per spiegarvi ancora meglio come funzionano queste chiamate, vi lascio questo schema:

Schema comunicazione App Management Service di SharePoint 2013

Spero vi sia utile.