2017-02-15 5 views
3

dotnetcore1.1dotnet-cli 1.0.0-rc4-004771のNancyFX(クリントイーストウッド)を使用しようとしています。私の現在のプロジェクト構造がある -dotnetcoreとkestrelのNancy 500サーバーエラー

CustomBootstrapper.cs 
HomeModule.cs 
index.sshtml 
nancyapp.csproj 
Program.cs 
Startup.cs 

とコードがある -

nancyapp.csproj

<Project Sdk="Microsoft.NET.Sdk.Web"> 
    <PropertyGroup> 
    <TargetFramework>netcoreapp1.1</TargetFramework> 
    </PropertyGroup> 
    <ItemGroup> 
    <PackageReference Include="Microsoft.AspNetCore.Owin"> 
     <Version>1.1.0</Version> 
    </PackageReference> 
    <PackageReference Include="Microsoft.AspNetCore.Server.Kestrel"> 
     <Version>1.1.0</Version> 
    </PackageReference> 
    <PackageReference Include="Nancy"> 
     <Version>2.0.0-clinteastwood</Version> 
    </PackageReference> 
    </ItemGroup> 
</Project> 

Program.csの

using System.IO; 
using Microsoft.AspNetCore.Builder; 
using Microsoft.AspNetCore.Hosting; 

namespace nancyapp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var host = new WebHostBuilder() 
       .UseKestrel() 
       .UseContentRoot(Directory.GetCurrentDirectory()) 
       .UseStartup<Startup>() 
       .Build(); 

      host.Run(); 
     } 
    } 
} 

Startup.cs

using Microsoft.AspNetCore.Builder; 
using Nancy.Owin; 

namespace nancyapp 
{ 
    public class Startup 
    { 
     public void Configure(IApplicationBuilder app) 
     { 
      app.UseOwin(x => x.UseNancy()); 
     } 
    } 
} 

HomeModule.cs

using Nancy; 

namespace nancyapp 
{ 
    public class HomeModule : NancyModule 
    { 
     public HomeModule() 
     { 
      Get("/", _ => { return View["index.sshtml"]; }); 
      Get("/test/{name}", args => new Person() { Name = args.name }); 
     } 
    } 

    public class Person 
    { 
     public string Name { get; set; } 
    } 
} 

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Document</title> 
</head> 
<body> 
    Welcome to Nancy App. 
</body> 
</html> 

CustomBootstrapper.cs index.sshtml現在空です。

残りのクライアントからGet("/test/{name}", args => new Person() { Name = args.name });にアクセスしようとすると、予想通りの結果が得られます。私は根やGet("/", _ => { return View["index.sshtml"]; });にアクセスしようとすると

しかし、私は500サーバーエラーが言ってもらう -

エラーの詳細は現在無効になっています。有効にするには、 TraceConfiguration.DisplayErrorTracesをtrueに設定してください。たとえば してブートストラップの設定メソッドをオーバーライドし、 environment.Tracing(有効真:偽、displayErrorTraces)を呼び出す私は、エラーメッセージ内の命令、以下試してCustomBootstrapper.cs次のコードを含むことで、エラーのトレースを有効に

protected override void ApplicationStartup(Nancy.TinyIoc.TinyIoCContainer container, IPipelines pipelines) 
{ 
    var environment = GetEnvironment(); 
    environment.Tracing(true, true); 
} 

しかしdotnet run

Unhandled Exception: System.ArgumentException: An item with the same 
    key has already been added. Key: Nancy.TraceConfiguration at 
    System.ThrowHelper.ThrowAddingDuplicateWithKeyArgumentException(Object key) at 
    System.Collections.Generic.Dictionary`2.Insert(TKey key,TValue value, Boolean add) at 
    nancyapp.CustomBootstrapper.ApplicationStartup(TinyIoCContainer container, IPipelines pipelines) in D:\TempWork\nancyapp\CustomBootstrapper.cs:line 17 at 
    Nancy.Bootstrapper.NancyBootstrapperBase`1.Initialise() at 
    Nancy.Owin.NancyMiddleware.UseNancy(NancyOptions options) at 
    Nancy.Owin.DelegateExtensions.UseNancy(Action`1 builder, NancyOptionsoptions) at 
    nancyapp.Startup.<>c.<Configure>b__0_0(Action`1 x) in D:\TempWork\nancyapp\Startup.cs:line 10 at 
    Microsoft.AspNetCore.Builder.OwinExtensions.UseOwin(IApplicationBuilder builder, Action`1 pipeline) at 
    nancyapp.Startup.Configure(IApplicationBuilder app) in D:\TempWork\nancyapp\Startup.cs:line 10 
    --- End of stack trace from previous location where exception was thrown --- at 
    System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at 
    Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder app) at 
    Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication() at 
    Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() at 
    nancyapp.Program.Main(String[] args) in D:\TempWork\nancyapp\Program.cs:line 11 
でアプリケーションを実行しようとすると、私は次のエラーを取得します0

エラーの原因やトレースを有効にする方法がわかりません。誰も助けることができますか?

+0

ブラウザから 'url'にアクセスしようとするとどうなりますか? 'GetEnvironment'のコードを表示してください。 – zulq

答えて

4

ザ・ここでは二つの問題です:ビューが見つからなかったため

  • 500は、何をする必要があるIRootPathProviderを実装することで、ルートパスを提供し、Directory.GetCurrent()を返すことです。
  • 第2に、トレースを有効にするには、public override void Configure(INancyEnvironment environment)キーが追加されます。
関連する問題