gpt4 book ai didi

servicestack - ServiceClient 的一个实例可以用于多线程应用程序 (MVC)

转载 作者:行者123 更新时间:2023-12-04 04:45:14 25 4
gpt4 key购买 nike

在我的 ASP.NET MVC Controller 中,我想调用一个基于服务栈的服务(不托管在 MVC 站点中)。为了使代码可测试,我想将此服务客户端注入(inject)到 Controller 构造函数中。

假设我有自己的继承自 JsonServiceClient 的类,我可以使用该服务客户端的单例来进行所有 MVC 调用吗?这意味着客户端必须是线程安全的。

(Autofac)注册可以是单例:

builder.RegisterType<SomeServiceClient>().SingleInstance();

或者它必须是每个 http 请求:

builder.RegisterType<SomeServiceClient>().InstancePerHttpRequest();

找到一篇博客文章,其中另一个 servicestack 用户似乎使用单例,但我不确定:Blog Article Showing an Example

最佳答案

每个请求通常都是可重入的,因此作为单例使用主要是线程安全的,需要注意的是它共享相同的 CookieContainer,而 ServiceClients 不会改变 CookieContainer Collection 本身,底层的 WebRequest 会,但不会知道 WebRequest 是否同步访问它——尽管我个人从未见过它们有任何问题。

您可以通过以下方式禁用正在使用的 Cookie(即,如果您的客户端不需要 session ):

client.StoreCookies = false;

关于servicestack - ServiceClient 的一个实例可以用于多线程应用程序 (MVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19287228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com