На работе нам нужно небольшое приложение, и мы решили протестировать некоторые вещи, с которыми мы не очень знакомы и для этого проекта.
Я начал с консольного приложения, используя topshelf для размещения nancy через пакет nancy selfhosting. Все это работает.
Теперь я хотел подключить контейнер DryIoc к загрузчику nancy и получил следующую ошибку:
System.MissingMethodException
HResult=0x80131513
Message=Method not found: 'DryIoc.Rules DryIoc.Rules.With(DryIoc.FactoryMethodSelector, DryIoc.ParameterSelector, DryIoc.PropertiesAndFieldsSelector, Boolean)'.
Source=Nancy.Bootstrappers.DryIoc
StackTrace:
at Nancy.Bootstrappers.DryIoc.DryIocNancyBootstrapper.<GetApplicationContainer>b__0(Rules rules)
at DryIoc.Container..ctor(Func`2 configure, IScopeContext scopeContext)
at Nancy.Bootstrappers.DryIoc.DryIocNancyBootstrapper.GetApplicationContainer()
at Nancy.Bootstrapper.NancyBootstrapperBase`1.Initialise()
at Nancy.Hosting.Self.NancyHost..ctor(INancyBootstrapper bootstrapper, HostConfiguration configuration, Uri[] baseUris)
at Nancy.Hosting.Self.NancyHost..ctor(Uri baseUri, INancyBootstrapper bootstrapper, HostConfiguration configuration)
at Segrey.Licensing.Web.WebService.Start() in I:\git projects\Segrey.Licensing\Segrey.Licensing.Web\WebService.cs:line 21
at Segrey.Licensing.Service.Program.<>c.<CreateHost>b__1_2(WebService ls) in I:\git projects\Segrey.Licensing\Segrey.Licensing.Service\Program.cs:line 26
at Topshelf.ServiceConfiguratorExtensions.<>c__DisplayClass2_0`1.<WhenStarted>b__0(T service, HostControl control)
at Topshelf.Builders.DelegateServiceBuilder`1.DelegateServiceHandle.Start(HostControl hostControl)
at Topshelf.Hosts.ConsoleRunHost.Run()
Мой загрузчик: пустой, пока нет регистраций, так как я сначала хотел проверить это, прежде чем усложнять
public class Bootstrapper : DryIocNancyBootstrapper
{
protected override void ApplicationStartup(IContainer container, IPipelines pipelines)
{
//No registrations should be performed in here, however you may
//resolve things that are needed during application startup.
base.ApplicationStartup(container, pipelines);
}
protected override void ConfigureApplicationContainer(IContainer container)
{
//Perform registation that should have an application lifetime
base.ConfigureApplicationContainer(container);
}
protected override void ConfigureRequestContainer(IContainer container, NancyContext context)
{
//Perform registrations that should have a request lifetime
base.ConfigureRequestContainer(container, context);
}
protected override void RequestStartup(IContainer container, IPipelines pipelines, NancyContext context)
{
// No registrations should be performed in here, however you may
// resolve things that are needed during request startup.
base.RequestStartup(container, pipelines, context);
}
}
И в моем методе .Start для службы через верхнюю полку, где назначается загрузчик
public void Start()
{
var hostConfig = new HostConfiguration() { UrlReservations = new
UrlReservations { CreateAutomatically = true } };
var uri = new Uri(_hostUrl);
_nancyHost = new NancyHost(uri, new Bootstrapper(), hostConfig);
_nancyHost.Start();
}
Ошибка возникает на новом NancyHost(uri, new Bootstrapper(), hostConfig); как только я добавлю новый Bootstrapper() в аргументы