问题标签 [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.

0 投票
1 回答
757 浏览

c# - ServiceStack - 继承 Single Restservice 中的所有 DTO 资源

如何在一项服务中继承所有 DTO 资源?

比如说,

我有资源类:

我有我的服务类: 1.如何在此服务中继承另一个 DTO 类???????? 2.我需要为此创建单独的类吗????

请就这个问题给我建议......

0 投票
3 回答
4453 浏览

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*NMapPathCacheInfoCacheEntry对象,因此内存仍在消耗,只是速度要慢得多。

更新#2

问题的另一半与此处描述的问题相同:防止许多不同的 MVC URL 填充 ASP.NET Cache。环境

<cache percentagePhysicalMemoryUsedLimit="1" privateBytesPollTime="00:00:01"/> 有帮助,但即使使用这些非常激进的设置,内存使用量也会迅速上升到 2.5GB(与 4GB 相比)。理想情况下,这些对象一开始就不会被创建。如果做不到这一点,我可能会求助于使用反射来清除缓存的 hacky 解决方案(所有这些条目都是“私有的”,并且在迭代公共缓存时不会枚举)。

0 投票
1 回答
3214 浏览

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 可以很好地处理匿名对象。

0 投票
2 回答
1541 浏览

web-services - 记录 ServiceStack Web 服务

记录基于 ServiceStack 的 Web 服务的选项有哪些,我不是在谈论单行字符串。

我希望能够详细记录(可能很长)、返回类型、可能的 HTTP 响应、添加详细示例等。

ServiceStack 中是否对此有任何支持(我找不到)?如果没有,是否有人以其他方式解决了问题。

0 投票
3 回答
23772 浏览

c# - ServiceStack.Text 如何将类序列化为 JSON

刚刚下载了 ServiceStack.Text 以在我的 ASP.NET 中使用它。我有许多属性的类,并希望将其中的五个(字符串、整数、二进制)序列化为 JSON。任何人都可以发布简单的示例如何从我的班级创建 JSON 对象吗?

0 投票
5 回答
5672 浏览

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 ?

0 投票
1 回答
576 浏览

web-services - 从 ServiceStack 客户端使用通过 SOAP 公开的 Java CXF WS

上下文: 我想使用 ServiceStack 构建一个 SOAP 客户端,以使用现有的 Java CXF WebService,通过定义了 WSDL 的 SOAP 公开(我无法控制 WS 本身)。出于授权目的,我可能需要在 SOAP 信封中添加几个额外的标头。

问题: 以上所有方法都可能吗?如果可以,有什么问题?如果有任何具体示例,欢迎提供链接。

0 投票
2 回答
2609 浏览

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.JsvReader1”的类型初始化程序引发了异常。---> System.TypeInitializationException:“ServiceStack.Text.Common.DeserializeList 2' threw an exception. ---> System.TypeInitializationException: The type initializer for 'ServiceStack.Text.Jsv.JsvReader1”的类型初始化程序引发了异常。---> System.TypeInitializationException:“ServiceStack.Text.Jsv.JsvReader 1' threw an exception. ---> System.TypeInitializationException: The type initializer for 'ServiceStack.Text.Common.DeserializeList2”的类型初始化程序引发了异常。---> System.TypeInitializationException: 'ServiceStack.Text.Jsv.JsvReader`1' 的类型初始化程序引发了异常。---> System.ArgumentException:为调用方法'Void set_Item(Int32,MyApp.MyClass)'提供的参数数量不正确

我的解决方案中没有名为 set_Item 的方法,在 ServiceStack.Text 程序集中(使用反射器)也找不到这样命名的方法。我不知道问题可能是什么......而且我需要一个快速的序列化类型,但我知道的最快的(protobuf-net)不支持嵌套列表。

有任何想法吗?导致问题的类如下(protomembers在那里,因为我测试了protobuf方法)


0 投票
1 回答
1857 浏览

c# - 如何使用 ServiceStack.Net 实现客户端身份验证

我正在使用 servicestack.net 库开发 Web 服务。

在我的场景中,将从 WPF 应用程序调用 Web 服务。我需要能够验证只有经过批准的客户端应用程序正在调用我的服务。

这就像在客户端应用程序中硬编码“用户名”和“密码”一样简单吗?这显然不是正确的方法。有没有更好的办法?

编辑 此外,在客户端,用户自己将能够使用用户名/密码登录并向服务发起请求(不确定这是否会影响任何事情,所以我想我会提到它),

0 投票
3 回答
932 浏览

c# - 解决方案中包含多个 IoC 容器是否存在问题?

我正在使用 ASP.NET MVC 前端和 ServiceStack.NET Web 服务构建一个多层应用程序。

我在项目开始时就开始使用 Ninject 进行 DI。现在我正在将 ServiceStack 添加到组合中,我很好奇是否有任何未来问题的可能性:

ServiceStack 库默认使用 Funq 作为其 IoC 容器。一切似乎都正常工作,但我想知道在同一个应用程序中有两个 IoC 容器是否会出现任何问题?