问题标签 [servicestack]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - ServiceStack - 继承 Single Restservice 中的所有 DTO 资源
如何在一项服务中继承所有 DTO 资源?
比如说,
我有资源类:
我有我的服务类: 1.如何在此服务中继承另一个 DTO 类???????? 2.我需要为此创建单独的类吗????
请就这个问题给我建议......
asp.net - 禁用 ASP.NET HttpHandler 响应缓存
背景
我正在比较在 IIS 7 下运行的 NancyFx 和 ServiceStack.NET 的性能(在 Windows 7 主机上测试)。两者都非常快——在本地测试每个框架处理超过 10,000 多个请求/秒,ServiceStack 快约 20%。
我遇到的问题是 ASP.NET 似乎正在缓存来自 HttpHandler 的每个唯一 URI 请求的响应,迅速导致巨大的内存压力(3+ GB)和垃圾收集器过度工作(大约 25% 的时间消耗GC)。到目前为止,我一直无法禁用对象的缓存和构建,并且正在寻找有关如何禁用此行为的建议。
细节
请求循环基本如下:
响应是一个简单的 JSON 对象,格式为 { UserID: n }。
我已经破解了打开的 WinDBG,每个请求都有:
- 一
System.Web.FileChangeEventHandler
- 二
System.Web.Configuration.MapPathCacheInfos
- 二
System.Web.CachedPathDatas
- 三
System.Web.Caching.CacheDependencys
- 五
System.Web.Caching.CacheEntrys
显然,这些缓存项让我相信这是一个缓存膨胀问题(我很想摆脱 150,000 个不可用的对象!)。
到目前为止我尝试过的
- 在 IIS 'HTTP Resonse Headers' 中,将 'Expire Web content' 设置为 'immediately'。
在 web.config
/li>也在 web.config 中(以及策略的许多变体,包括没有)。
/li>查看框架的源代码,看看是否有任何内置的“功能”会使用 ASP.NET 缓存。虽然有缓存帮助器,但它们是框架本身私有的,并且似乎没有利用 ASP.NET 缓存。
更新#1
通过反射器挖掘我发现将值设置UrlMetadataSlidingExpiration
为零可以消除大部分过多的内存使用,但代价是吞吐量减少了 50%(FileAuthorizationModule 类缓存 FileSecurityDescriptors,当UrlMetadataSlidingExpiration
是非零)。
这是通过更新 web.config 并将以下内容放入:
如果可能,我将尝试完全禁用 FileAuthorizationModule 运行,看看是否有帮助。但是,ASP.NET 仍在生成 2*NMapPathCacheInfo
和CacheEntry
对象,因此内存仍在消耗,只是速度要慢得多。
更新#2
问题的另一半与此处描述的问题相同:防止许多不同的 MVC URL 填充 ASP.NET Cache。环境
<cache percentagePhysicalMemoryUsedLimit="1" privateBytesPollTime="00:00:01"/>
有帮助,但即使使用这些非常激进的设置,内存使用量也会迅速上升到 2.5GB(与 4GB 相比)。理想情况下,这些对象一开始就不会被创建。如果做不到这一点,我可能会求助于使用反射来清除缓存的 hacky 解决方案(所有这些条目都是“私有的”,并且在迭代公共缓存时不会枚举)。
c# - 如何使用 ServiceStack JsonSerializer 序列化 ExpandoObject?
是否可以让 ServiceStack JsonSerializer 将 ExpandoObject 序列化为平面对象而不是字典?大致近似于此:
我正在尝试比较ExpandoObject
使用三种不同系统的 JSON 序列化:.NET BCL JavaScriptSerializer、Newtonsoft JSON.NET 和 ServiceStack 的 JSON 产品。
我从一个相当简单的动态对象开始。
序列化程序将 ExpandoObject 视为IDictionary<string, object>
. BCL 和 ServiceStack 都是以这种方式开始的,尽管结果的路径完全不同。
我希望 ExpandoObject 更多地序列化,因为它是在代码中组装的,就像一个典型的类会被序列化一样。您可以为IDictionary<string, object>
. 这很好用,假设一个人实际上没有IDictionary<string, object>
需要保持这种状态(我还没有)。
不幸的是,我仍然需要一种方法来让 ServiceStack 的 JsonSerializer 以同样的方式处理 ExpandoObject。我如何连接到 ServiceStack 系统以使这成为可能?
更新:虽然它不是我使用的选项,但看起来 ServiceStack 可以很好地处理匿名对象。
web-services - 记录 ServiceStack Web 服务
记录基于 ServiceStack 的 Web 服务的选项有哪些,我不是在谈论单行字符串。
我希望能够详细记录(可能很长)、返回类型、可能的 HTTP 响应、添加详细示例等。
ServiceStack 中是否对此有任何支持(我找不到)?如果没有,是否有人以其他方式解决了问题。
c# - ServiceStack.Text 如何将类序列化为 JSON
刚刚下载了 ServiceStack.Text 以在我的 ASP.NET 中使用它。我有许多属性的类,并希望将其中的五个(字符串、整数、二进制)序列化为 JSON。任何人都可以发布简单的示例如何从我的班级创建 JSON 对象吗?
c# - Service Stack Hello World tutorial: exception EndpointHost.Config is null
I am following the service stack "Hello World" tutorial from http://www.servicestack.net/ServiceStack.Hello/ . But when I am trying to start the asp.net application it says "Value can't be null. Parameter Name: EndpointHost.Config".
The full exception text is:
My global class is:
But it seems to never get called. Compiling the example project from the homepage works fine - but I would like to follow the example from the homepage. Any ideas how to solve this problem ?
web-services - 从 ServiceStack 客户端使用通过 SOAP 公开的 Java CXF WS
上下文: 我想使用 ServiceStack 构建一个 SOAP 客户端,以使用现有的 Java CXF WebService,通过定义了 WSDL 的 SOAP 公开(我无法控制 WS 本身)。出于授权目的,我可能需要在 SOAP 信封中添加几个额外的标头。
问题: 以上所有方法都可能吗?如果可以,有什么问题?如果有任何具体示例,欢迎提供链接。
c# - ServiceStack.Text 序列化异常(为调用方法 'Void set_Item(Int32, MyApp.MyClass)' 提供的参数数量不正确)
我正在尝试使用 ServiceStack.Text 反序列化包含嵌套类列表的对象。
序列化进行得很顺利,但是在尝试反序列化时,出现此错误:
System.TypeInitializationException:“ServiceStack.Text.Jsv.JsvReader
1' threw an exception. ---> System.TypeInitializationException: The type initializer for 'ServiceStack.Text.Jsv.JsvReader
1”的类型初始化程序引发了异常。---> System.TypeInitializationException:“ServiceStack.Text.Common.DeserializeList2' threw an exception. ---> System.TypeInitializationException: The type initializer for 'ServiceStack.Text.Jsv.JsvReader
1”的类型初始化程序引发了异常。---> System.TypeInitializationException:“ServiceStack.Text.Jsv.JsvReader1' threw an exception. ---> System.TypeInitializationException: The type initializer for 'ServiceStack.Text.Common.DeserializeList
2”的类型初始化程序引发了异常。---> System.TypeInitializationException: 'ServiceStack.Text.Jsv.JsvReader`1' 的类型初始化程序引发了异常。---> System.ArgumentException:为调用方法'Void set_Item(Int32,MyApp.MyClass)'提供的参数数量不正确
我的解决方案中没有名为 set_Item 的方法,在 ServiceStack.Text 程序集中(使用反射器)也找不到这样命名的方法。我不知道问题可能是什么......而且我需要一个快速的序列化类型,但我知道的最快的(protobuf-net)不支持嵌套列表。
有任何想法吗?导致问题的类如下(protomembers在那里,因为我测试了protobuf方法)
c# - 如何使用 ServiceStack.Net 实现客户端身份验证
我正在使用 servicestack.net 库开发 Web 服务。
在我的场景中,将从 WPF 应用程序调用 Web 服务。我需要能够验证只有经过批准的客户端应用程序正在调用我的服务。
这就像在客户端应用程序中硬编码“用户名”和“密码”一样简单吗?这显然不是正确的方法。有没有更好的办法?
编辑 此外,在客户端,用户自己将能够使用用户名/密码登录并向服务发起请求(不确定这是否会影响任何事情,所以我想我会提到它),
c# - 解决方案中包含多个 IoC 容器是否存在问题?
我正在使用 ASP.NET MVC 前端和 ServiceStack.NET Web 服务构建一个多层应用程序。
我在项目开始时就开始使用 Ninject 进行 DI。现在我正在将 ServiceStack 添加到组合中,我很好奇是否有任何未来问题的可能性:
ServiceStack 库默认使用 Funq 作为其 IoC 容器。一切似乎都正常工作,但我想知道在同一个应用程序中有两个 IoC 容器是否会出现任何问题?