2016-08-09 248 views
1

Ich habe eine ASP.NET Core-Anwendung erstellt und möchte diese App auf meinem Win2008-Server installieren. Wenn ich die Anwendung direkt in Turmfalke starte (Doppelklick auf die exe, die die Hauptdatei enthält), funktioniert alles einwandfrei. Allerdings, wenn ich die Anwendung über IIS erhalte ich die folgende Ausnahme starten:ASP.NET Core kann die Ansicht nicht finden, wenn sie in IIS integriert ist

fehlschlagen: Microsoft.AspNetCore.Server.Kestrel [13] Verbindungs-ID „0HKU0DCR0LPSS“: Eine nicht behandelte Ausnahme von der Anwendung ausgelöst wurde. System.InvalidOperationException: Die Ansicht 'Login' wurde nicht gefunden. Folgende Standorte wurden gesucht: /Views/Account/Login.cshtml /Views/Shared/Login.cshtml bei Microsoft.AspNetCore.Mvc.ViewEngines.ViewEngineResult.EnsureSuccessful (IEnumerable`1 originalLocations) bei Microsoft.AspNetCore.Mvc .ViewResult.d__26.MoveNext()

Genau diese Ausnahme wurde bereits in dieser question diskutiert. Aber ich habe meine Dateien mit der vorgeschlagenen Lösung verglichen und bekomme trotzdem den Fehler.

Ich habe auch festgestellt, dass eine Konfigurationsdatei, die ursprünglich neben der application.exe platziert wurde, in den Ordner wwwroot verschoben werden muss, wenn ich die App über IIS starte. Hier

ist der Inhalt meiner web.config, die innerhalb des wwwroot Ordner sitzt:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer> 
    <handlers> 
     <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" /> 
    </handlers> 
    <aspNetCore processPath="..\ERMSClient.exe" arguments="" stdoutLogEnabled="true" stdoutLogFile="..\logs\stdout" /> 
    </system.webServer> 
</configuration> 

Und das ist mein project.json

{ 
    "dependencies": { 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "Microsoft.AspNetCore.StaticFiles": "1.0.0", 
    "Microsoft.AspNetCore.Mvc.TagHelpers": "1.0.0", 
    "Microsoft.EntityFrameworkCore": "1.0.0", 
    "Microsoft.EntityFrameworkCore.SqlServer": "1.0.0", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.0.0", 
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.0.0", 
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final", 
    "Microsoft.AspNetCore.Server.WebListener": "0.1.0", 
    "Microsoft.AspNetCore.Http": "1.0.0", 
    "Microsoft.AspNetCore.Authorization": "1.0.0", 
    "Microsoft.AspNetCore.Authentication.Cookies": "1.0.0", 
    "Microsoft.AspNetCore.Mvc.Core": "1.0.0", 
    "Microsoft.AspNetCore.Mvc.ApiExplorer": "1.0.0", 
    "Microsoft.AspNetCore.Mvc.Abstractions": "1.0.0", 
    "Microsoft.AspNetCore.Session": "1.0.0", 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0", 
    "Microsoft.AspNetCore.Razor.Tools": { 
     "version": "1.0.0-preview2-final", 
     "type": "build" 
    }, 
    "Newtonsoft.Json": "9.0.1", 
    "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "System.Web.Helpers.dll": "1.0.0", 
    "AutoMapper": "5.0.2", 
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": "1.0.0-preview2-final", 
    "Microsoft.Extensions.Configuration": "1.0.0", 
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0" 
    }, 
    "tools": { 
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview2-final", 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final" 
    }, 

    "frameworks": { 
    "net461": { 
     "dependencies": { 
     "d3Communicator": { 
      "target": "project" 
     } 
     } 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true 
    }, 

    "publishOptions": { 
    "include": [ 
     "wwwroot", 
     "Views", 
     "appsettings.json", 
     "web.config" 
    ] 
    }, 
    "scripts": { 
    "prepublish": [ "npm install", "bower install" ], 
    "postpublish": "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" 
    } 
} 

Außerdem muss ich erwähnen, dass ich hat dieses Projekt von ASP.NET RC1 aktualisiert. Daher habe ich vielleicht einen alten Eintrag oder etwas anderes irgendwo.

+0

Können Sie teilen, wie Ihre Web.config aussieht, auch ein Snapshot des veröffentlichten Ordners, den Sie in IIS ablegen? –

+0

Können Sie Ihre project.json teilen? Und sagen Sie uns, wie Sie es veröffentlichen –

+0

haben Sie falsche Projektvorlage verwendet? Normalerweise sollte es einen Eintrag in Ihrer project.json geben, der über den Views-Ordner kopiert, wo die Exe ist und dasselbe tut bei der Veröffentlichung/Veröffentlichung – Tseng

Antwort

1

Ich fand die sehr, sehr einfache Antwort auf mein Problem. Irgendwie bin ich davon ausgegangen, dass ich den physischen Pfad meiner IIS-Site auf das wwwroot-Verzeichnis meines ASP.NET Core-Projekts verweisen muss. Dies ist nicht korrekt, da der physische Pfad auf das vollständige Veröffentlichungsverzeichnis über dem wwwroot zeigen muss.