我们目前有一个使用 OWIN 连接的 NancyFx 项目。我们没有使用 System.Web,我们需要一些地方来放置我们的上下文,该上下文在 HttpContext 之外的请求的生命周期中存在。我们已经开始在线程静态变量上实现上下文,因此我们可以在应用程序的任何地方访问上下文,但我们担心使用异步调用会丢失这个线程静态上下文。
当您与 System.Web 分离时,您在 HttpContext 中使用什么作为静态访问器?
我们目前有一个使用 OWIN 连接的 NancyFx 项目。我们没有使用 System.Web,我们需要一些地方来放置我们的上下文,该上下文在 HttpContext 之外的请求的生命周期中存在。我们已经开始在线程静态变量上实现上下文,因此我们可以在应用程序的任何地方访问上下文,但我们担心使用异步调用会丢失这个线程静态上下文。
当您与 System.Web 分离时,您在 HttpContext 中使用什么作为静态访问器?
您可以改用 NancyContext。NancyContext 上的 Items 字典用于存储每个请求的对象。NancyContext 在 Nancy 应用程序的任何地方都可用。
该线程可能会回答您的问题:https ://groups.google.com/forum/#!topic/nancy-web-framework/yILM4ZMrsSQ
public class Bootstrapper : DefaultNancyBootstrapper
{
protected override void ConfigureRequestContainer(
TinyIoCContainer container, NancyContext context)
{
base.ConfigureRequestContainer(container, context);
container.Register<ICurrentRequest>(
(c, o) => new CurrentRequest(context));
}
private class CurrentRequest : ICurrentRequest
{
public CurrentRequest(NancyContext context)
{
this.Context = context;
}
public NancyContext Context { get; private set; }
}
}