2015-02-12 12 views
24

Dovrebbe essere una domanda facile, proprio non riesce a trovare la risposta.Come servire index.html con web API selfhosted con OWIN

Ho una SPA (AngularJS) con web api che è auto-ospitata con Owin. Io uso Nancy per servire la pagina, ma vorrei liberarmi di Nancy e usare Index.html come singola pagina.

che ho visto questa domanda qui: How to route EVERYTHING other than Web API to /index.html

non posso usare risposta accettata come non ho MVC e HomeController, il modo suggerito nella domanda aggiornato non funziona neanche, ottengo No HTTP resource was found that matches the request URI 'http://admin.localhost:33333/'.No route providing a controller name was found to match request URI 'http://admin.localhost:33333/'

risposta

37

Sposta il file Index.html nella radice del progetto. Poi install-package Microsoft.Owin.StaticFiles in Console Package Manager e aggiungere il codice qui sotto:

public class Startup 
{ 
    public void Configuration(IAppBuilder app) 
    { 

     const string rootFolder = "."; 
     var fileSystem=new PhysicalFileSystem(rootFolder); 
     var options = new FileServerOptions 
         { 
          EnableDefaultFiles = true, 
          FileSystem = fileSystem 
         }; 

     app.UseFileServer(options); 

    } 
} 

questo servirà il vostro Index.HTML per impostazione predefinita.

è possibile verifica il blog di Scott Allen per più lettura:

http://odetocode.com/blogs/scott/archive/2014/02/10/building-a-simple-file-server-with-owin-and-katana.aspx

+0

Grazie, questo è molto utile. Solo un suggerimento: il pacchetto sembra essere al plurale: Microsoft.Owin.StaticFiles – sp3ctum

+0

Possiamo usare questa tecnica per ospitare sia UI (angular app) che WebApi nella stessa porta? Se sì, allora puoi condividere il codice? Grazie – AustinTX