Nancy på ASP.NET vNext ikke laste Nancy.Viewengines.Razor viewengine

stemmer
2

Jeg prøver Nancy med ASP.NET vNext på debian. Jeg har setup en prøve prosjekt, og fikk det til å fungere med en selvtillit vert Owin søknad.

Nancy seg selv ser ut til å kjøre fint, men det er på utkikk etter visningene i K runtime katalog og Razor viewengine ikke kan lastes.

K viser ikke Nancy.Viewengines.Razor lastes selv om det er i project.json fil

Dette er den feilen at jeg får:

Nancy.RequestExecutionException: Oh noes! ---> Nancy.ViewEngines.ViewNotFoundException: Unable to locate view 'ViewTest' Currently available view engine extensions: sshtml,html,htm Locations inspected: views/Home/ViewTest-nl-NL,views/Home/ViewTest,Home/ViewTest-nl-NL,Home/ViewTest,views/ViewTest-nl-NL,views/ViewTest,ViewTest-nl-NL,ViewTest Root path: /home/vnext/.kre/packages/KRE-mono45-x86.1.0.0-alpha3/bin/ If you were expecting raw data back, make sure you set the 'Accept'-header of the request to correct format, for example 'application/json' at Nancy.ViewEngines.DefaultViewFactory.GetRenderedView (string,object,Nancy.ViewEngines.ViewLocationContext) <0x008a3> .

Min project.json:

{ dependencies: { Microsoft.Owin.Hosting: 2.1.0-*, Microsoft.Owin.Hosting: 2.1.0-*, Microsoft.Owin.Host.HttpListener: 2.1.0-*, Nancy: 0.23.2-*, Nancy.Owin: 0.23.2-*, Nancy.Viewengines.Razor: 0.23.2-*, }, }

Lastet bibliotekets:

vnext@vnext:~/test/src$ k run /home/vnext/.kre/packages/KRE-mono45-x86.1.0.0-alpha3/bin/klr.host.dll Information : 0 : [LoaderContainer]: Load name=Microsoft.Owin.Host.HttpListener /home/vnext/.kre/packages/KRE-mono45-x86.1.0.0-alpha3/bin/klr.host.dll Information : 0 : [DefaultLoaderEngine]: LoadFile(/home/vnext/.kpm/packages/Microsoft.Owin.Host.HttpListener/2.1.0/lib/net45/Microsoft.Owin.Host.HttpListener.dll) /home/vnext/.kre/packages/KRE-mono45-x86.1.0.0-alpha3/bin/klr.host.dll Information : 0 : [NuGetAssemblyLoader]: Loaded name=Microsoft.Owin.Host.HttpListener in 1ms /home/vnext/.kre/packages/KRE-mono45-x86.1.0.0-alpha3/bin/klr.host.dll Information : 0 : [LoaderContainer]: Load name=Nancy.Owin /home/vnext/.kre/packages/KRE-mono45-x86.1.0.0-alpha3/bin/klr.host.dll Information : 0 : [DefaultLoaderEngine]: LoadFile(/home/vnext/.kpm/packages/Nancy.Owin/0.23.2/lib/net40/Nancy.Owin.dll) /home/vnext/.kre/packages/KRE-mono45-x86.1.0.0-alpha3/bin/klr.host.dll Information : 0 : [NuGetAssemblyLoader]: Loaded name=Nancy.Owin in 1ms

Det vil laste en vanlig HTML-visning når jeg legger den i KRE bin katalogen, men ikke i prosjektets Vis mappe.

Hvordan kan jeg tvinge Nancy å se i riktig mappe, og hvordan kan jeg laste Razor viewengine?

Dette er koden som jeg har brukt: https://github.com/matthijsbreemans/nancy-owin-vnext

Publisert på 25/08/2014 klokken 18:18
kilden bruker
På andre språk...                            


2 svar

stemmer
3

Nancy skanner AppDomain.CurrentDomain.BaseDirectoryfor forsamlinger som standard. I vNext, er menighetene lagret i separate pakker, og ikke i bin-katalogen, derfor er det ikke finner Razor visning motoren. Inntil full støtte er tilgjengelig, kan du implementere din egen bootstrapper og overstyre ViewEngines listen:

protected override void ConfigureApplicationContainer(TinyIoCContainer container)
{
    base.ConfigureApplicationContainer(container);
    container.Register<IViewEngine, Nancy.ViewEngines.Razor.RazorViewEngine>();
    container.Register<Nancy.ViewEngines.Razor.IRazorConfiguration, Nancy.    ViewEngines.Razor.DefaultRazorConfiguration>();
}

protected override IEnumerable<Type> ViewEngines
{
    get { return new[] { typeof(Nancy.ViewEngines.Razor.RazorViewEngine) }; }
}

Utsikten er også lagret i en annen mappe (spesielt når publisert). Opprett en ny klasse som implementerer IRootPathProvider, og returnere IApplicationEnvironment.ApplicationBasePath. Jeg har gjort dette (for nå som en midlertidig løsning) ved å lagre IApplicationEnvironment i en statisk variabel (IOC i Nancy seg selv ikke finner en forekomst når du bruker den i bootstrapper):

public class Startup
{
    internal static IApplicationEnvironment Environment { get; private set; }

    public Startup(IApplicationEnvironment env)
    {
        Environment = env;
    }

    public void ConfigureServices(IServiceCollection services) { }

    public void Configure(IApplicationBuilder app)
    {
        app.UseOwin(a => a.UseNancy());
    }
}

og implementere Nancys IRootPathProvider:

public class vNextRootPathProvider : IRootPathProvider
{
    private string BasePath = Startup.Environment.ApplicationBasePath;

    public string GetRootPath()
    {
        return BasePath;
    }
}
Svarte 22/05/2015 kl. 06:35
kilden bruker

stemmer
-1

KRE kan ikke fant visninger katalogen, kan du tilpasset den Bootstrapper og overstyring IRootPathProvider, sette rotkatalogen til absolutt sti. Se på: https://github.com/NancyFx/Nancy/wiki/The-root-path

Svarte 05/05/2015 kl. 08:53
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more