Nancyと共にAutofacを使用する次のプログラムは、デフォルトのNancyサーバーを正しく起動しません。AutofacとNancy
using Autofac;
using Nancy.Hosting.Self;
using System;
namespace NancyExample
{
class Program
{
static void Main(string[] args)
{
var builder = new ContainerBuilder();
builder.Register(c => new NancyHost(new Uri("http://localhost:8080"))).SingleInstance();
using (var container = builder.Build())
{
NancyHost host = container.Resolve<NancyHost>();
// this fails with:
// Exception thrown: 'System.Net.HttpListenerException' in System.dll
// Exception thrown: 'System.Net.HttpListenerException' in System.dll
// Exception thrown: 'System.InvalidOperationException' in System.dll
// Exception thrown: 'System.InvalidOperationException' in System.dll
// this works:
// NancyHost host = new NancyHost(new Uri("http://localhost:8080"));
host.Start();
}
Console.ReadLine();
}
}
}
NancyHostをAutofacで解決すると、.NETのHttpListenerにエラーが深刻なように見えます。この例外については、詳細がよくないようです。 http://localhost:8080を訪問すると、接続されません。
NancyHostをインスタンス化すると問題なく動作します。
使用:
- をAutofac 4.3
- ナンシー1.4.3
- Nancy.Hosting.Self 1.4.1
なぜあなたは 'NancyHost'をコンテナから解決しますか?コンテナをまったく使用していないのですか? – khellang
また、なぜその呼び出しが 'HttpListener'に関連するもので失敗するのか分かりません。ナンシーは 'Start'を呼び出す前に' HttpListener'に触れません。 – khellang
問題を示すためにユースケースを単純化しました。実際には、コンテナから構成を注入します。リストされたエラーは、実際にはStartが呼び出されたときのエラーです。 –