Tag: servicestack

如何在ServiceStack中提前会话超时

ServiceStack中的身份validation,存储库和缓存提供程序提供了一种向Web应用程序添加登录会话的简单方法,几乎​​不需要其他代码。 我发现可以配置身份validation提供程序的会话超时,例如: new CredentialsAuthProvider { SessionExpiry = TimeSpan.FromMinutes(10) } 这提供了从登录点到期的到期日。 如果我们正在开发一个必须在短时间内将用户注销的安全系统,那么我们会将其从默认的2周更改为类似上面的示例。 但是这有一个问题,即无论用户是否仍在与应用程序进行交互,登录用户的10分钟将被踢出。 是否有一种简单的方法可以告诉会话提供者延长调用服务时的到期时间? 理想情况下,它允许我们扩展特定服务/请求的会话(以便仅在用户主动与应用程序交互时扩展会话,因此可以忽略轮询的服务)。 更新 基于mythz给出的答案,我们现在有一个简单的解决方案,通过扩展ResponseFilterAttribute来提供我们所需的控制级别。

如何将XSD文件转换为C#类

我有一个XSD格式的文件。 如何将其转换为C#类? 我需要在其他Web应用程序中使用类引用,我需要按照以下方式进行调用: var res = client.Post(“/customers”, c );

ServiceStack如何处理并发调用?

ServiceStack如何处理并发调用? 我在WCF中寻找相当于ConcurrencyMode.Multiple的东西。 我的WCF服务设置了此属性: [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple, UseSynchronizationContext = false)] 我是否需要在ServiceStack中启用任何内容以使其为每个调用使用多个线程?

为什么我收到错误“类型’IReturn ‘是在未引用的程序集中定义的”使用VIsualStudio 2017中的ServiceStack

我正在运行Visual Studio 2017 15.6.3。 我有一个.NET Standard 2.0 DLL项目,其中包含与ServiceStack一起使用的Request和Response类。 Request类实现了IReturn 。 我有一个.NET Core 2.0控制台EXE项目,它引用了.NET标准DLL。 此EXE使用ServiceStack JsonServiceClient将请求发送到ServiceStack服务。 它编译并正常工作。 我添加了一个.NET Framework 4.6.1控制台EXE项目,该项目也引用了.NET Standard 2.0 DLL。 它必须是一个Framework应用程序,因为它引用了与Core或Standard不兼容的其他DLL。 此EXE使用ServiceStack JsonServiceClient将请求发送到与.NET Core EXE完全相同的ServiceStack服务,但此程序将无法编译。 框架4.6.1应该支持.NET Standard 2.0 DLL,但由于某种原因它与IReturn 接口有冲突。 var extentRequest = new ExtentRequest { … }; using (var client = new JsonServiceClient(baseUrl)) { return client.Post(extentRequest); } 返回的错误是:“类型’IReturn ‘在未引用的程序集中定义。您必须添加对程序集’ServiceStack.Interfaces,Version = 5.0.0.0,Culture = […]

ServiceStack基准继续:为什么坚持简单(复杂)到JSON会减慢SELECT?

因此,mythz在之前的SO问题中并不喜欢我不那么科学的基准问题,但是因为我想切换到OrmLite,我需要弄清楚它是否很慢,如果是,那么为什么。 在我的“研究”中,我得出结论,复杂的对象,即OrmLite中的JSON,是非常慢的SELECT的罪魁祸首。 因此,我创建了一个仅专注于OrmLite的新项目,并且不与其他任何东西进行比较,这里的目的是看到具有blobbed JSON对象和没有它们之间的差异。 它可以在GitHub上找到: https : //github.com/tedekeroth/ormlitebenchmarking解决方案如下所示: 我使用MySql 5.6在Windows 7,2.6Ghz,24 GB RAM上运行OrmLite 5.1.1,当前没有CPU负载。 应用程序连接到127.0.0.1(root / root)并需要数据库“ormlite”。 我启用了ThrowOnError: OrmLiteConfig.ThrowOnError = JsConfig.ThrowOnError = true; 该应用程序如下所示: 没有数据:只是创建的对象,没有属性有数据 基元:只填充了一些简单的原始属性 Prim + one complex:所有原语如上+一个blobbed复杂对象 完整数据:以上所有+另外2个复杂的blobbed对象 “ 创建”按钮首先在列表中创建10 000个对象,然后使用OrmLite Insert方法保留它们。 时间测量仅针对INSERT进行,而不是创建对象。 public void AddRow(T coreObject) where T : CoreObject { long id = 0; using (var _db = _dbFactory.Open()) { […]

unit testing使用ServiceStack的HTTPRequest标头

我有这项服务: public class PlayerService : Service { public IPlayerAppService PlayerAppService { get; set; } public PlayerService (IPlayerAppService service) { if (service == null) throw new ArgumentException (“Service null”); PlayerAppService = service; } public object Post (PlayerDTO request) { var newPlayer = new PlayerResponse () { Player = PlayerAppService.SendPlayerLocation(request.Position.Latitude, request.Position.Longitude) }; return new HttpResult (newPlayer) { […]

StackExchange.Redis和ServiceStack.Redis之间的区别

有人可以解释一下ServiceStack.Redis和StackExchange.Redis c#库的区别吗?

ServiceStack默认格式

我想将ServiceStack的默认格式设置为JSON,而不是从浏览器访问服务时通常返回的HTML格式的响应。 我知道这可以通过发送?format = json参数或将Accept标头设置为application / json来指定每个请求。 有没有办法改变这一点,而不必依赖请求中的这些提示?

这是ServiceStack Redis的有效用法吗?

我是Redis的新手(在托管服务中使用它),并希望将其用作列表的演示/沙箱数据存储。 我使用下面的代码。 这个对我有用。 但对于一个拥有多个(最多100个)并发用户(对于少量数据 – 最多1000个列表项)的小型网站来说,这是一种有效(而非完全不好的做法)用法吗? 我正在使用静态连接和静态redisclient类型列表,如下所示: public class MyApp { private static ServiceStack.Redis.RedisClient redisClient; public static IList Persons; public static IRedisTypedClient PersonClient; static MyApp() { redisClient = new RedisClient(“nnn.redistogo.com”, nnn) { Password = “nnn” }; PersonClient = redisClient.GetTypedClient(); Persons = PersonClient.Lists[“urn:names:current”]; } } 这样做我有一个非常容易使用的持久数据列表,这正是我在构建/演示应用程序的基本块时所需要的。 foreach (var person in MyApp.Persons) … 添加新人: MyApp.Persons.Add(new Person { […]

如何在ASP.Net MVC控制器中正确使用ServiceStack身份validation

我在使用ServiceStack [Authentication]属性在ASP.Net MVC4控制器中工作时遇到问题,即使在正确提交登录详细信息之后,具有该属性的页面/操作方法也会将用户重定向到登录页面。 我遵循了SocialBootstrapApi示例,不同之处在于所有身份validationWeb服务调用都是从控制器进行的: this.CreateRestClient().Post(“/register”, model); 到目前为止我做过的其他事情: 使用我自己的用户会话实现子类化AuthUserSession(与示例没有太大区别,但使用我自己的User表实现) 在我的BaseController上inheritanceServiceStackController,覆盖默认登录URL 使用我的用户会话实现在AppHost中启用Authfunction 注册确实有效,用户身份validation逻辑工作(即使会话不存在),我可以在请求中看到ss-id和ss-pid cookie。 所以我的完整问题清单: 如何使[Authenticate]属性起作用(或者,我做错了什么)? 如何在MVC控制器中保存和重用用户会话? 目前this.UserSession始终为null。 如何注销用户? this.CreateRestClient().Get(“/auth/logout”); 似乎没有用。 更新1: 在我提交任何凭据之前,当我尝试加载安全页面(具有[Authenticate]属性的页面)时,会创建会话cookie( ss-id和ss-pid )。 这是预期的行为吗? 更新2: 我可以看到会话保存在MemoryCacheClient ,但尝试通过this.Cache.Get(SessionKey)在基本控制器中检索它返回null(其中SessionKey如下: urn:iauthsession:1 )