Skip to content

Error when using async routes #27

@michael-wolfenden

Description

@michael-wolfenden

I am getting an error when using an async route for my homepage:

Get["/", true] = async (_, __) => await RenderHomepage();
System.NullReferenceException was unhandled by user code
  HResult=-2147467261
  Message=Object reference not set to an instance of an object.
  Source=Cassette.Nancy
  StackTrace:
       at Cassette.Nancy.NancyContextLifetimeProvider.GetObject() in c:\development\Cassette.Nancy\src\Cassette.Nancy\NancyContextLifetimeProvider.cs:line 20
       at Cassette.TinyIoC.TinyIoCContainer.CustomObjectLifetimeFactory.GetObject(Type requestedType, TinyIoCContainer container, NamedParameterOverloads parameters, ResolveOptions options)
       at Cassette.TinyIoC.TinyIoCContainer.ResolveInternal(TypeRegistration registration, NamedParameterOverloads parameters, ResolveOptions options)
  InnerException: 

I believe the issue is due to the NancyContext being stored as a ThreadLocal. The response is being returned on a different thread due to async and so the call to getContext() is returning null as we set the context on a different thread.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions