Join this community to post or comment

Demis Bellot

Announcements  - 
v4.5.0 Released!

This is a quick release where the major change is that all packages have been upgraded to .NET 4.5 including upgrading to use the most appropriate 3rd party dependencies, e.g ServiceStack.Razor now references the official
Microsoft.AspNet.Razor NuGet package.

.NET Core support for ServiceStack.Redis!

We've extended our support for .NET Core in this release to now also include
ServiceStack.Redis. To make it easy to start using Redis in a .NET Core App we've created a step-by-step guide for using ServiceStack.Redis on .NET Core in both Windows and Linux at:

New Xamarin.Forms TechStacks App

We've published an Xamarin.Forms demo for TechStacks App that shows sharing both UI code and C# Service Clients for both iOS and Android Apps at:

We've prepared a youtube video showing what Xamarin.Forms App looks like on both iOS/Android at:

AutoQuery Viewer Saved Queries

You can now save multiple queries for each AutoQuery Service in AutoQuery Viewer:

Create Live Executable Docs with Gistlyn

We've greatly simplified the UX and effort to create collections in Gistlyn complete with built-in Markdown Editor, Live Preview, multi image uploads and easy linking to existing/new C# Gists and collections.

We've prepared a video showcasing the new UX in action:

The Truly Empty ASP.NET Template

Since the default Empty ASP.NET Template continues to get more bloated with each passing year, we've created our own bloat-free Empty ASP.NET project VS.NET Template with Roslyn being the only dependency.

It doesn't have any dependency on ServiceStack, but it's easy to configure by just adding ServiceStack NuGet packages, Handler mapping in Web.config and AppHost in Global.asax.

Auto rewriting of HTTPS Links

ServiceStack now rewrites outgoing links to use https if ServiceStack is being hosted behind a SSL-terminated proxy which is configured to send `X-Forwarded-Proto = https` HTTP Request Header.

For more info you can read a summary of the release notes at:

Or for the complete details check out the full release notes at:
v4.5.0 Release Notes We've upgraded all ServiceStack packages to .NET 4.5, if you were already using ServiceStack in .NET 4.5 projects this will be a seamless upgrade like any other release but if your ServiceStack projects are instead still on .NET 4.0 this will be a breaking change which will require converting all your projects to .NET 4.5 Framework before upgrading, e.g: [image] You will also need to have .NET 4.5 Framework installed ...
Chris McKee's profile photo
Add a comment...

Ahiad Farfara

Discussion  - 
Hey Guys, Is the latest ServiceStack compatible with .net 4.5?
Demis Bellot's profile photo
Yes all packages are, most .dlls are .NET 4.0 and can run on .NET 4.5 as-is, we also provide .NET 4.5 specific builds for some packages to provide added features (e.g. async support in OrmLite). In the release after next we also intend to upgrade all packages to .NET 4.5 in preparation for .NET Core support.
Add a comment...

Pramod Jangam

Discussion  - 
Hello guys,

I was trying to use ServiceStack.Redis for my ASP.NET core project. Found out that it is not yet migrated to dotnetcore. Can you tell me if you guys have plan to migrate to core in near future?

ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.
Demis Bellot's profile photo
Sorry for the delay, just found this post sitting in Spam. We've just shipped our first support for .NET Core with our client libraries in our latest v4.0.62 release: We're going to foucs on bringing Redis to .NET Core next, you can vote for this feature request to get notified of updates:
Add a comment...

Demis Bellot

Announcements  - 
Hi Everyone,

Just wanted to make sure everyone knows of Scott Mackay's series of posts he's doing explaining how their Company uses ServiceStack and their ecosystem of OSS ServiceStack Plugins they're developing ( to help them develop their system using Microservices:

It's a nice dive into the world of Microservices and highlights different things to watch out for and evaluates a number of different technologies that help when your system is split into multiple independent Services.

He's first few posts covers benefits of DTOs and Messaging, Event Sourcing, Scaling, Distributed Debugging, Logging, Service discovery, load balancing and Routing with a lot more topics planned for the future.

It's a great read and a good website to bookmark and watch out for as the series progresses!

This is part one of an in-depth series on implementing a microservices architecture using ServiceStack, Consul, EventStore and Redis. Context: the what and the why?
Scott Mackay's profile photoFranck Quintana's profile photo
Thank you for sharing your experience in ServiceStack!
Add a comment...

Demis Bellot

Announcements  - 
v4.0.56 Released!

This is another release jam-packed with some killer features, the release notes are unfortunately a bit longer than usual as the new features required more detail to describe what each does and understand how they work.

I'll list the big points below to provide a quick overview, but you can put aside the free time, checkout the v4.0.56 Release Notes: for the finer details.

New AutoQuery Data

AutoQuery Data is an alternative implementation of AutoQuery for RDBMS but supports an Open Provider model which can be implemented to query multiple data source backends. The 3 data source
providers available include:

- MemorySource - for querying static or dynamic in-memory .NET collections, some of the included examples show querying a flat-file `.csv` file and a 3rd Party API that can also the throttled with configurable caching.
- ServiceSource - a step higher than MemorySource where you can decorate the response of existing Services with AutoQuery's rich querying capabilities.
- DynamoDbSource - adds rich querying capabilities over an AWS DynamoDB Table making it much more productive than if you had to construct the query manually.

AutoQuery DynamoDB queries are also self-optimizing where it will transparently construct the most optimal query possible by looking at any Hash Id's, Range Keys and Local Indexes populated in the Request to construct the most optimal DynamoDB QueryRequest or Scan Operation behind-the-scenes.

And since AutoQuery Services are just normal ServiceStack Services they get to take advantage of ServiceStack's rich ecosystem around Services so with just the single AutoQuery DynamoDB Request DTO below:

[CacheResponse(Duration = 60, MaxAge = 30)]
public class QueryRockstarAlbums : QueryData<RockstarAlbum>
public int? Id { get; set; }
public int? RockstarId { get; set; }
public string Genre { get; set; }
public int[] IdBetween { get; set; }

We've declaratively created a fully-queryable DynamoDB AutoQuery Service that transparently executes the most ideal DynamoDB queries for each request, has it's optimal representation efficiently cached on both Server and clients, whose Typed DTO can be reused as-is on the client to call Services with an end-to-end Typed API using any .NET Service Client, that's also available to external developers in a clean typed API, natively in their preferred language of choice, accessible with just a right-click menu integrated inside VS.NET, Xcode, Android Studio, IntelliJ and Eclipse - serving both PCL Xamarin.iOS/Android as well as native iOS and Android developers by just Adding a ServiceStack Reference to the base URL of a remote ServiceStack Instance - all without needing to write any implementation!

HTTP Caching

HTTP Caching is another big feature we expect to prove extremely valuable which much improves story around HTTP Caching that transparently improves the behavior of existing ToOptimized Cached Responses, provides a typed API to to opt-in to HTTP Client features, introduces a simpler declarative API for enabling both Server and Client Caching of Services and also includes Cache-aware clients that are able to improve the performance and robustness of all existing .NET Service Clients - functionality that's especially valuable to bandwidth-constrained Xamarin.iOS / Xamarin.Android clients offering improved performance and greater resilience.

Cache-aware Service Clients

You can now create cache-aware versions of all .NET Service Clients that respects any caching directives returned by your Server using the `.WithCache()` extension methods, e.g:

IServiceClient client = new JsonServiceClient(baseUrl).WithCache();

IServiceClient client = new JsonHttpClient(baseUrl).WithCache();

Cache-aware Service Clients can dramatically improve performance by eliminating server requests entirely as well as reducing bandwidth for re-validated requests. They also offer an additional layer of resiliency as re-validated requests that result in Errors will transparently fallback to using pre-existing locally cached responses. For bandwidth-constrained environments like Mobile Apps they can dramatically improve the User Experience and as they're available in all supported PCL client platforms.

@jezzsantos also wrote a comprehensive overview about HTTP Caching in general and described out he developed an alternative caching solution in ServiceStack in his epic Caching Anyone post:

Service Gateway

is another valuable capability that despite being trivial to implement on top of ServiceStack's existing message-based architecture, opens up exciting new possibilities for development of loosely-coupled Modularized Service Architectures.

The Service Gateway is available from `base.Gateway` in both sync:

public object Any(GetCustomerOrders request)
return new GetCustomerOrders {
Customer = Gateway.Send(new GetCustomer { Id = request.Id }),
Orders = Gateway.Send(new QueryOrders { CustomerId = request.Id })

and async versions:

public async Task<GetCustomerOrdersResponse> Any(GetCustomerOrders request)
return new GetCustomerOrdersResponse {
Customer = await Gateway.SendAsync(new GetCustomer { Id = request.Id }),
Orders = await Gateway.SendAsync(new QueryOrders { CustomerId = request.Id })

The benefit of the Gateway is that the same above code will continue to function even if you later decided to split out your Customer and Order subsystems out into different Micro Services.

The Service Gateway also allows plugging in a Discovery Service for your Micro Services where you can happily just send Request DTO's to call Services and the Discovery Service will transparently route it to the most available Service.

We're extremely fortunate to have @Mac and @rsafier both jump in with Service Discovery solutions straight out-of-the-gate which you can find more about in their GitHub Project home pages:


Super CSV Support

We've now implemented CSV deserialization support so now all your Services can accept CSV payloads in addition to serializing to .csv. As a tabular data format it's especially useful when your Service accepts Lists of POCO's such as in Auto Batched Requests where it's now the most compact text data format to send them with using either the new `CsvServiceClient` or `.PostCsvToUrl()` HTTP Utils extension method.

A feature that sets ServiceStack's CSV support apart is that it's built on the compact and very fast JSV Format which not only can deserialize a tabular flat file of scalar values at high-speed, it also supports deeply nested object graphs which are encoded in JSV and escaped in a CSV field.

Which opens a number of interesting use-cases as you can now maintain rich code or system data in .csv flat-files to easily query them in AutoQuery Services, making it a great option for structured logging as they're now easily parsable, queryable with AutoQuery Data, analyzed with your favorite Spreadsheet or imported using CSV features or data migration tooling for your preferred RDBMS.

Given these useful properties we've developed a CSV Request Logger that can be registered with:

Plugins.Add(new RequestLogsFeature {
RequestLogger = new CsvRequestLogger(),

To store request and error logs into daily logs to the following overridable locations:

- `requestlogs/{year}-{month}/{year}-{month}-{day}.csv`
- `requestlogs/{year}-{month}/{year}-{month}-{day}-errors.csv`

Error logs are also written out into a separate log file as it can be useful to view them in isolation.

Virtual FileSystem

To efficiently support Appending to existing files as needed by the CsvRequestLogger we've added new `AppendFile` API's and implementations for Memory and FileSystem Virtual File Providers:

interface IVirtualFiles
void AppendFile(string filePath, string textContents);
void AppendFile(string filePath, Stream stream);


New `UpdateAdd` API's provides several Typed API's for updating existing values:

/Increase everyone's Score by 3 points
db.UpdateAdd(new Person { Score = 3 }, fields: x => x.Score);

//Remove 5 points from Jackson Score
db.UpdateAdd(new Person { Score = -5 }, x => x.Score, x =>
where: x.LastName == "Jackson");

//Graduate everyone and increase everyone's Score by 2 points
var q = db.From<Person>().Update(x => new { x.Points, x.Graduated });
db.UpdateAdd(new Person { Points = 2, Graduated = true }, q);

Deprecating Legacy OrmLite API's

We're going to gracefully deprecate OrmLite's legacy API's by first deprecating them in this release to notify which API's are earmarked to move, then in a future release we'll move the extension methods under the `ServiceStack.OrmLite.Legacy` namespace to move them out of OrmLite's default namespace.

The deprecated API's include those ending with `Fmt` which uses C#'s old-style string formatting, e.g:

var tracks = db.SelectFmt<Track>("Artist = {0} AND Album = {1}",

Ideally they should be replaced with the parameterized API's below:

var tracks = db.Select<Track>(x => x.Artist == "Nirvana" && x.Album == "Nevermind");

var tracks = db.Select<Track>("Artist = @artist AND Album = @album",
new { artist = "Nirvana", album = "Nevermind" });

var tracks = db.SqlList<Track>(
"SELECT * FROM Track WHERE Artist = @artist AND Album = @album",
new { artist = "Nirvana", album = "Nevermind" });

The other API's that have been deprecated are those that inject an `SqlExpression<T>` e.g:

var tracks = db.Select<Track>(q =>
q.Where(x => x.Artist == "Nirvana" && x.Album == "Nevermind"));

Which should be changed to passing in the `SqlExpression<T>` by calling `db.From<T>`, e.g:

var tracks = db.Select(db.From<Track>()
.Where(x => x.Artist == "Nirvana" && x.Album == "Nevermind"));


ServiceStack's POCO-friendly DynamoDB client has added support for DynamoDB's UpdateItem which lets you modify existing attributes. The easiest API to use is to pass in a partially populated POCO with containing any non-default values you want updated:

db.UpdateItemNonDefaults(new Customer { Id = customer.Id, Age = 42 });

There's also a more flexible API to support each of DynamoDB UpdateItem operations, e.g:

put: () => new Customer {
Nationality = "Australian"
add: () => new Customer {
Age = -1
delete: x => new { x.Name, x.Orders });


Additional resiliency was added in ServiceStack.Redis which can now handle re-connections for broken TCP connections happening in the middle of processing a Redis Operation.

New API's were added to remove multiple values from a Sorted Set:

interface IRedisClient {
long RemoveItemsFromSortedSet(string setId, List<string> values);

interface IRedisNativeClient {
long ZRem(string setId, byte[][] values);

ServiceStack IDEA

The ServiceStack IDEA Android Studio plugin was updated to support Android Studio 2.0.


There were a number of community plugins published in this release, check out their GitHub projects for
more info:

- [ServiceStack.Discovery.Redis](
- [ServiceStack.SimpleCloudControl](
- [ServiceStack.Funq.Quartz](
- [ServiceStack.Discovery.Consul](
- [ServiceStack.Discovery.Redis](

Other Features

- Changed ServiceStack.Interfaces to Profile 328 adding support Windows Phone 8.1
- New `IHasStatusDescription` can be added on Exceptions to customize their StatusDescription
- New `IHasErrorCode` can be used to customize the ErrorCode used, instead of its Exception Type
- New `AppHost.OnLogError` can be used to override and suppress service error logging

Demis Bellot's profile photoRob Schoenaker's profile photo
Add a comment...

Shlomo Shs

Discussion  - 
Where I can find docs of migrating 3 to 4?
Since even  client 4 version not working with servicestack 3 api version because of dependency on interfaces.
Demis Bellot's profile photo
v4 is a major upgrade from v3, the best source of info is the first release notes which details many of the changes:

All the release notes since then include all the features/changes that are now in v4.
Add a comment...

Demis Bellot

Announcements  - 
v4.0.54 released!

v4.0.54 is another jam-packed release with a lot of features across the board, the release notes is longer than normal which I'll do my best to summarize:

AutoQuery Viewer

An exciting new plugin available from the ServiceStack.Admin NuGet package which provides an instant automatic UI for all your AutoQuery services. As it's super quick to add we've enabled it on a number of existing live demos which you can try out:


It also ships with a number of productive features out-of-the-box:

- Marking up Services - Use `[AutoQueryViewer]` attribute to mark up look and default behavior of Services
- Filter Services - If you have a lot of Services, this will help quickly find the service you want
- Authorized Only Services - Users only see the AQ Services they're authorized to, which lets you customize the UI for what each user sees
- Multiple Conditions - The UI makes it easy to create complex queries with multiple conditions
- Updated in Real-Time - AQ Services are refreshed and App State is saved as-you-type
- Change Content Type - The short-cut links can be used to access results in your desired format
- Customize Columns - Customize results to only return the columns you're interested in
- Sorting and Paging - Results can be sorted by any column and paged with nav links

A quick showcase of some of these features are available on YouTube:

AutoQuery Enhancements

A number of new Enhancements were also added to AutoQuery Services:

- Parameterized AutoQuery - AQ Services are now parameterized with Convention Templates converted to use db params
- Customizable Fields - You can now customize which fields you want returned using new Fields property
- Named Connection - As part of our new Multitenancy features AQ Services can be easily configured to run on multiple db's
- T4 Templates - OrmLite's T4 templates now have options for generating AutoQuery Services and named connections

Server Events

We've added a couple of demos showing how easy it is to create rich, interactive mobile and web apps with Server Events:

Xamarin.Android Chat

The new Xamarin.Android demo shows how to use the .NET PCL typed Server Events Client to connect to an existing back-end and communicate with existing Ajax web clients. It also shows how to use Xamarin.Auth to authenticate with ServiceStack using Twitter and OAuth.

A quick demo is available from:

Networked Time Traveller Shape Creator

We've given the existing Time Traveller Shape Creator networking capabilities which now let you "Remote Desktop" into and watch other users view the app. This was surprisingly simple to do with Redux, just 1 React Component and 2x 1-line ServiceStack ServerEvent Services.

Live demo at:

Update Channels on Live Subscriptions

You can now update the channels your active SSE subscription is connected to without re-connecting. This is enabled everywhere, in Memory + Redis SSE backends as well as typed API's for .NET and Ajax clients.

TypeScript React App (beta)

The new TypeScript + React VS.NET Tempalte captures what we believe is the best combination of technologies for developing rich JavaScript apps: TypeScript 1.8, React, JSPM, typings + Gulp - combined together within a single integrated, pre-configured VS.NET template. This tech suite represents our choice stack for developing rich Single Page Apps which we've used to build AutoQuery Viewer and Networked Shape Creator and currently our number #1 choice for new SPA Apps.

TypeScript Redux

To help developers familiarize themselves with these technologies we've also published an in-depth step-by-step guide for beginners that starts off building the simplest HelloWorld TypeScript React App from scratch then slowly growing with each example explaining how TypeScript, React and Redux can be used to easily create the more complex networked Time Travelling Shape Creator, available at:


To make it easier to use ss-utils in JavaScript projects, we're maintaining copies of ss-utils in npm, JSPM and Definitely Typed registries. We've also added a few new common utils:

- $.ss.combinePaths
- $.ss.createPath
- $.ss.createUrl
- $.ss.normalizeKey
- $.ss.normalize
- $.ss.postJSON

Customize JSON Responses on-the-fly

The JSON/JSV responses for all your services can now be customized on-the-fly by your Service consumers so they're able to access your JSON responses in their preferred configuration using the `?jsconfig` modifier, e.g:


It also supports the much shorter Camel Humps notation:


Most JsConfig config options are supported.

Improved support for Multitenancy

There are a number of new features and flexibile options available to make Multitenancy easier to support where you can easily change which DB is used at runtime based on an incoming request with a request filter.

We've added a number of examples in the release notes to show how this works.

ServiceClient URL Resolvers

You can use the new `TypedUrlResolver` and `UrlResolver` delegates available on every .NET Service Client to change which url each request is made with.


This feature makes it easy to enable high-level discovery and health/failover features as seen in the new ServiceStack.Discovery.Consul Community project which maintains an active list of available load-balanced ServiceStack Services as well as auto-registering the Services each instance supports taking care of managing the different endpoints for each Service where all Typed requests can be made with a single Service Client and Consul takes care of routing to the appropriate active endpoint.

Multiple File Uploads

The new PostFilesWithRequest API's on every ServiceClient for sending mutliple file uploads with a single Request.

Local MemoryCacheClient

The new `LocalCache` property gives your Services access to a Local Memory Cache in addition to your registered ICacheClient


- New `[EnumAsInt]` attribute can be used as an alternative to `[Flags]` for storing enums as ints in OrmLites but serialized as strings
- Free-text SQL Expressions are now converted to Parameterized Statements
- New SelectFields API provides an smart API to reference and return custom fields
- All `db.Exists()` API's have been optimized to return only a single scalar value
- Max String column definition on MySql now uses LONGTEXT


- New `JsConfig.SkipDateTimeConversion` to skip built-in Conversion of DateTime's.
- New `ISO8601DateOnly` and `ISO8601DateTime` DateHandler formats to emit only the Date or Date and Time

Stripe Gateway

Support added to support Stripe's unconventional object notation for complex Requests. This feature is used
in the new `CreateStripeAccount` API.

Minor ServiceStack Features

- Old Session removed and invalided when generating new session ids for a new AuthRequest
- New ResourcesResponseFilter, ApiDeclarationFilter and OperationFilter added to SwaggerFeature to modify response
- `Name` property added to `IHttpFiles` in Response.Files collection
- `HostType`, `RootDirectoryPath`, `RequestAttributes`, `Ipv4Addresses` and `Ipv6Addresses` added to [?debug=requestinfo](
- `StaticFileHandler` now has `IVirtualFile` and `IVirtualDirectory` constructor overloads
- New `StaticContentHandler` for returning custom text or binary responses in `RawHttpHandlers`

WARNING .NET 4.0 builds will cease after August 1, 2016

We want to warn everyone that we will be upgrading all packages to .NET 4.5 and stop providing .NET 4.0 builds after August 1, 2016 now that Microsoft no longer supports them. If you absolutely need supported .NET 4.0 builds after this date please leave a comment on:

And that's a wrap, apologies for the length of the TL;DR despite my best efforts to condense. For even more details on each feature please see the release notes:


Add a comment...

Pavan Kumar

Discussion  - 
Does ServiceStack client for Redis support Sliding Expiration of keys?
Demis Bellot's profile photo
That's not a redis client feature, that's an application level feature where you'd need to reset the key expiration either by storing the key using `SetValue()` with an expiration or modifying the expiration of an existing key with ExpireEntryIn/ExpireEntryAt
Add a comment...

Eugene Safonov

Discussion  - 

is it possible to use different dialect providers (MSSql, MySql etc.) at the same time in multi-threading app? Thanks!
Eugene Safonov's profile photo
It's not working properly in v3 - sometimes I got sql statements with incorrect dialect. v4 - ok.
Add a comment...

Is there any plan to support the new Redis Cluster specification that was added in Redis 3.0? We are moving part of our infrastructure to the new version and it would be great if we could continue to use ServiceStack.
Demis Bellot's profile photoChen Huoming's profile photo
 +Demis Bellot  hi . i create a redis cluster(windows). how to use servicestack call the redis cluster. could you give me a sample ? Thanks
Add a comment...

About this community

ServiceStack is a services framework providing a simpler alternative to WCF, MVC and WebApi, with Web, REST, SOAP and MQ services for .NET. This group lets you get in touch with the wider ServiceStack community and share relevant news, announcements and discussion. To keep things relevant to members, and for this group to retain a high quality ratio of meaningful and interesting content - please keep all support questions on StackOverflow or inside Customer Forums. Customer support options are available at:

Demis Bellot

Announcements  - 
v4.0.62 Released!

We've got another jam-packed release with features added across the board, I'll do my best to list the main highlights but please see the release notes for the full details:

We're excited to announce to the world - Gistlyn is a C# Gist IDE for creating, running and sharing stand-alone, executable C# snippets!

Born from our goal to improve ServiceStack's documentation, we set out to create the best way for developers to learn and explore different features in ServiceStack, Gistlyn is the result of this effort which lets you try out and explore C# and .NET libraries using just a modern browser, making it the ideal companion tool for trying out libraries during development or on the go from the comfort of your iPad or recent Android tablets by going to:

Gistlyn lets you run any valid C# fragments will execute your code on Gistlyn's server, running in an isolated context where each of the variables defined in the top-level scope can be inspected further. The preview inspector also includes an Expression evaluator that can be used to evaluate C# expressions against the live server session.

Gistlyn is also an Open platform where anyone can create Collections - A simple markdown document with info about a feature and links to source code where users can try it out "live" in the browser, with instant feedback so you can quickly preview the results at a glance.

OrmLite Interactive Tour

The OrmLite Collection ( is a great example of this which is now the best way to learn about and try OrmLite with walk through guides that takes you through different OrmLite features. We intend to add more guides like this in future so Gistlyn becomes the best place to learn about and test different features. In the meantime we've added simple TODO examples pre-configured with the necessary Nuget packages to explore OrmLite, Redis and PocoDynamo at:


Add ServiceStack Reference in Gistlyn

One feature that will add a lot of complementary value to your ServiceStack Services is Gistlyn's integrated support for Add ServiceStack Reference feature which will generate a Typed API for your remote ServiceStack Services and let you call them using ServiceStack's typed C# Service Clients and view their results - within seconds!

The easiest way to use this feature is to add the BaseUrl for your remote ServiceStack instance to the `?AddServiceStackReference` query string, e.g:


Which will create a new Gist with your Typed DTOs attached and an example request using a pre-configured JsonServiceClient and the first GET Request DTO it can find. So without having written any code you can Press play to execute a Typed API Request against your ServiceStack Services.

The URL can be further customized to tell Gistlyn which Request DTO and C# expression it should use and whether to auto run it, more info at:

This feature should make it easier to collaborate with others about your ServiceStack Services as you can send a url so they can test it out without having the proper developer environment setup. For more advanced scenarios you can easily save a modified script as a gist and send a link to that instead.

Gistlyn Snapshots

Snapshots lets you save the entire client state of your current workspace (excluding your login info)
into a generated url which you can use to revert back in time from when the snapshot was taken or send to someone else who can instantly see and run what you're working on, who'll be able to continue working from the same place you're at.

Gistlyn's Stateless Architecture

One surprising thing about Gistlyn is that it's entirely stateless where it runs without any kind of backend db persistence. All state is either persisted to Github gists or in your browser's `localStorage`. Not even your Authenticated Github session is retained on the server as it's immediately converted into an encrypted JWT Cookie that is sent with every Ajax request, so redeployments (or even clean server rebuilds) won't lose any of your work or force you to Sign In again until the JWT Token expires.

Gistlyn's Github Repo provides a good example of a modern medium-sized ServiceStack, React + TypeScript App that takes advantage of a number of different ServiceStack Features:

- React Desktop Apps - tooling for packaging Gistlyn's ASP.NET Web App into a Winforms Desktop and Console App
- Server Events - providing real-time Script Status updates and Console logging
- TypeScript - enabling end-to-end Typed API requests
- Github OAuth - authentication with Github
- JWT Auth Provider - enabling both JWT and JWE ecrypted stateless Sessions
- HTTP Utils - consuming Github's REST API and creating an authenticated HTTP Proxy in GitHubServices.cs

Run Gistlyn on your Desktop

Thanks to ServiceStack's React Desktop Apps VS.NET Template Gistlyn is available in a variety of different flavours:

Deployed as an ASP.NET Web Application on both Windows / .NET and Linux / Mono servers at:

- - Ubuntu / Vagrant / Win 2012 VM / IIS / .NET 4.6
- - Ubuntu / Docker / mono / nginx / HyperFastCGI

In addition to a running as an ASP.NET Web App, Gistlyn is also available as a self-hosting Winforms Desktop or cross-platform OSX/Linux/Windows Console App:

Running Gistlyn on your Desktop lets you take advantage of the full resources of your CPU for faster build and response times and as they're run locally they'll be able to access your RDBMS or other Networked Servers and Services available from your local Intranet.

1st class TypeScript support

TypeScript has become a core part of our overall recommended solution that's integrated into all ServiceStackVS's React and Aurelia Single Page App VS.NET Templatesoffering a seamless development experience with access to advanced ES6 features like modules, classes and arrow functions whilst still being able to target most web browsers with its down-level ES5 support.

We've added even deeper integration with TypeScript in this release with several enhancements to the generated TypeScript DTOs which graduates TypeScript to a 1st class supported language that together with the new TypeScript `JsonServiceClient` available in the servicestack-client npm package enables the same productive, typed API development experience available in our other 1st-class supported client platforms, e.g:
.then(r => {
console.log(`New C# Gist was created with id: ${r.gist}`);
.catch(e => {
console.log("Failed to create Gist: ", e.responseStatus);

Where the `r` param in the returned `then()` Promise callback is typed to Response DTO Type.

Isomorphic Fetch

The `servicestack-client` is a clean "jQuery-free" implementation based on JavaScript's new Fetch API standard utilizing nodes isomorphic-fetch implementation so it can be used in both JavaScript client web apps as well as node.js server projects.


In addition to `JsonServiceClient` we've ported most of the JavaScript utils in ss-utils.js including the new `ServerEventsClient` which Gistlyn uses to process real-time Server Events with:

const channels = ["gist"];
const sse = new ServerEventsClient("/", channels, {
handlers: {
onConnect(activeSub:ISseConnect) {
store.dispatch({ type: 'SSE_CONNECT', activeSub });
fetch("/session-to-token", {
method:"POST", credentials:"include"
ConsoleMessage(m, e) {
batchLogs.queue({ msg: m.message });
ScriptExecutionResult(m:ScriptExecutionResult, e) {

.NET Core support for ServiceStack.Client

We're happy to be able to release our initial library support for .NET Core with .NET Core builds for ServiceStack.Client and its dependencies, available in the following NuGet packages:

- ServiceStack.Client.Core
- ServiceStack.Text.Core
- ServiceStack.Interfaces.Core

Until we've completed our transition, we'll be maintaining .NET Core builds in separate NuGet packages containing a `.Core` suffix as seen above. This leaves our existing .NET packages unaffected, whilst letting us increase our release cadence of .NET Core packages until support for .NET Core libraries has stabilized.

We've published a step-by-step guide showing how to Install ServiceStack.Client in a .NET Core App at:

ServiceStack.Text is now Free!

To celebrate our initial release supporting .NET Core, we're now making ServiceStack.Text completely free for commercial or non-commercial use. We've removed all free-quota restrictions and are no longer selling licenses for ServiceStack.Text. By extension this also extends to our client libraries that just depend on ServiceStack.Text, including ServiceStack.Client and ServiceStack.Stripe which are also both free of any technical restrictions.

Encrypted Service Clients for iOS, Android and OSX

The `EncryptedServiceClient` is now available in Xamarin iOS, Android and OSX packages so your Xamarin Mobile and OSX Desktop Apps are now able to benefit from transparent encrypted service client requests without needing to configure back-end HTTP servers with SSL.

Last release supporting .NET 4.0

As announced earlier this year in preparation for .NET Core, this will be our last release supporting .NET 4.0. Starting from next release all projects will be upgraded to .NET 4.5. Should you need it, the .NET 4.0 compatible ServiceStack source code will remain accessible in the `net40` branches of all major ServiceStack Github repositories.

Aurelia updated to 1.0

To coincide with the v1.0 release of Aurelia the Aurelia VS.NET template has been updated to v1.0 using bootstrap.native and is now pre-configured with both the new `servicestack-client` and local `src/dtos.ts` TypeScript Reference that includes an end-to-end Typed DTO integrated example.

Improved Razor intellisense

We've updated all our ASP.NET Razor VS.NET Templates to use the ideal `Web.config` configuration for editing Razor pages without designer errors in VS.NET 2015.

JWT Auth Provider

The `JwtAuthProvider` has added support for specifying multiple fallback AES Auth Keys and RSA Public Keys allowing for smooth key rotations to newer Auth Keys whilst simultaneously being able to verify JWT Tokens signed with a previous key.

Multitenancy RDBMS AuthProvider

ServiceStack's `IAuthProvider` has been refactored to use the central and overridable `GetAuthRepository(IRequest)` AppHost factory method where just like ServiceStack's other "Multitenancy-aware" dependencies now lets you dynamically change which AuthProvider should be used based on the incoming request.

This can be used with the new `OrmLiteAuthRepositoryMultitenancy` provider to maintain isolated User Accounts per tenant in all major supported RDBMS.


OrmLite continues to see improvements with many of the new features in this release contributed by the Community, with special thanks to @shift-evgeny, @OlegNadymov and @bryancrosby for their contributions. There's too many examples to list here, so please check the release notes for OrmLite's new capabilities.

Dump Utils

To improve their utility in Gistlyn C# gists for quickly dumping and inspecting the contents of an object the `T.PrintDump()` and `T.Dump()` extension methods can now be used on objects with cyclical references where it will display the first-level `ToString()` value of properties that have circular references.

The `Dump()` utils are invaluable when explanatory coding or creating tests as you can quickly see what's in an object without having to set breakpoints and navigate nested properties in VS.NET's Watch window.

PATCH APIs added to HttpUtils

The same HTTP Utils extension methods for Post and Put now also have `Patch()` equivalents.


Transaction support for Complex Type APIs was added to Redis and we've improved resiliency for dealing with failing Sentinels. The Default Auto Retry Timeout was also increased from 3 to 10 seconds.


PocoDynamo now has Typed API support for DynamoDB Conditional Expressions and C# int and string enums.


The `StripeGateway` now supports sending and Receiving Customer `Metadata`, `BusinessVatId` and returning the Customer's `Currency`.

Find free Tcp Port

The new `HostContext.FindFreeTcpPort()` lets you find the first free TCP port within a specified port-range which you can use to start your `AppHost` on the first available port:

var port = HostContext.FindFreeTcpPort(5000, endingAt:6000);
new AppHost()

Other ServiceStack Features:

- Named dependency support for Funq's AutoWired APIs was contributed by @donaldgray
- Compression of `[CacheResponse]` responses can now be disabled with the `NoCompression` property
- `MakeInternal` option was added to C# / F# and VB.NET Native Types to generate internal Types
- OnError callback added to ServerEvents and new `isAuthenticated` property now being returned to Clients
- Can disable the second Total query in AutoQuery with `IncludeTotal = false`
- New Request/Response filters for Service Gateways requests that are also validated against any Validators

This covers most of the features, please see the full release notes for more details on any of the ones you're interested in:

- Enjoy!

Add a comment...

Yan Sun

Discussion  - 
Does anyone have Redis HashMap example to share?
Demis Bellot's profile photo
Here's some Redis HASH tests using ServiceStack.Redis

If you have a specific code example that you want to see, please ask it on StackOverflow or in the Customer Forums.
Add a comment...

Demis Bellot

Announcements  - 
v4.0.60 Released!

We've just published another jam-packed release starting with exciting new API Key and JWT Auth Providers enabling fast, stateless and centralized Auth Services, a modernized API surface for OrmLite, new GEO capabilities in Redis, Logging for Slack, performance and memory improvements across all ServiceStack and libraries including useful utilities you can reuse to improve performance in your own Apps.

You can read a highlights summary in our Customer Forums:

and the full v4.0.60 Release Notes on GitHub:


v4.0.60 is another jam-packed release starting with exciting new API Key and JWT Auth Providers enabling fast, stateless and centralized Auth Services, a modernized API surface for OrmLite, new GEO capabilities in Redis, Logging for Slack, performance and memory improvements across all ServiceStack and libraries including useful utilities you can reuse to improve performance in your own Apps! I'll try highlight the main points but I welcome yo...
Add a comment...

Demis Bellot

Announcements  - 
ServiceStack VS Templates Update

We've just published an update to ServiceStackVS VS .NET Templates - the update release notes are available at:

React Desktop Apps received a major update with much faster Startup times on Windows that now features autoupdating support built-in courtesy of Squirrel Windows integration! The OSX App can now also be built using Xamarin's free Community Edition :)

We're now all-in with React and TypeScript with both our VS.NET SPA React Templates modernized with TypeScript + JSPM stack. If you're new to both, please checkout the comprehensive TypeScript + Redux walk through to get started quickly:
Steven Song's profile photoDemis Bellot's profile photo
+Steven Song we're very aware of this and are keenly waiting for Angular2 to get out of beta
Add a comment...

Shlomo Shs

Discussion  - 
Anyone used servicestack redis client for service discovery?
Is servicestack redis support it?
Shlomo Shs's profile photoDemis Bellot's profile photo
It's trivial to configure with ServiceStack.Redis, just initialize it with a sentinel host. Docs are here:

Whilst the redis-config project shows an example inc multiple redis config instances:
Add a comment...

Brandon G

Discussion  - 
I am wanting to use the T4 template against an ERP database. However it has 1000's of tables that I don't at this time want POCO's for and would like to exclude. Is there any way to denote which tables you want, rather than mark all the tables to ignore?
Brandon G's profile photoPeter Bromberg (Wrong is Right)'s profile photo
you can also pass parameters to a T4 template
Add a comment...

Demis Bellot

Announcements  - 
Hey All, buried at the end of the last release notes is a notice that we intend on discontinuing providing .NET 4.0 builds for releases after August 1st now that Microsoft has ended support for .NET 4, 4.5 and 4.5.1 on January 12th:

We hope that all your ServiceStack projects are already on .NET 4.5 or if not, have already planned to convert to .NET 4.5 now that MS has stopped supporting .NET 4.0. If you absolutely need .NET 4.0 builds beyond this date please leave feedback of your use-case requiring .NET 4.0 and expected time lines at:

.NET 4.0 will continue to be available for releases before August 1st but will no longer be providing any .NET 4.0 builds for any new releases after. We'll create v4 branches in all our repos just before we upgrade projects to .NET 4.5 so you can add fixes or create custom .NET 4.0 builds if needed, but we wont be maintaining the legacy v4 branches after August 1.

Add a comment...
I would like to know , if possible, about  any plans to support  Net.Core and Asp.Net core  and OWIN compatibility  for self-hosted services. 
thank you.
Demis Bellot's profile photo
You can vote for the feature request to get notified on any updates:

There's no change, we'll look at supporting DNX after it's been officially released.
Add a comment...

David Rothmann

Discussion  - 

we are using a old version of ServiceStack 3.9.71 in a very big project. We are looking to upgrade to the latest version with a license subscription for a few devs. 

First a few questions:

Is it worth the upgrade? Where are the big differences?

What would be the best way to upgrade? To do it in one steps should be impossible! We thought about a solutions to use both versions in parallel, but maybe there is an easier solution. Are there people with the same problem?

Franck Quintana's profile photoDavid Rothmann's profile photo
Hi Demis,

thank you for your great and detailed answer! I have started a big project and paused the ServiceStack migration for now. I will answer again when I have more time. Sorry! But just want to let you know, we will check every hint you mentioned.

Thank you,

Add a comment...

Shlomo Shs

Discussion  - 
Hi All,

Can anyone point to a post/documentation developing micro service with Servicestack?
Add a comment...