Join this community to post or comment

Demis Bellot

Announcements  - 
v4.0.44 Released!

This release saw a lot of focus going into the Redis and OrmLite libraries. 
You can see the full release notes at:

Redis Sentinel

We've added support for Redis's Highly Available Story for using additional Redis Sentinel processes to monitor the health of your Redis instances. The Sentinels take care of maintaining an authoritative list of available master and slave instances and will automatically failover to a replicated slave if it detects the master has failed. RedisSentinel changes how your client is configured where instead of specifying a connection string to individual master and slave instances you'd instead configure it to point to the sentinel instances which it queries to discover the available master and slave instances.

An example of the new configuration looks like:

    var sentinel = new RedisConfig("");
    IRedisClientsManager redisManager = sentinel.Start();

Instant Redis Sentinel Setup

To reduce the effort in setting up a multi-node Sentinel configuration we've created the project containing the necessary configuration and start/stop scripts and binaries to instantly start a multi-node Redis configuration with 1x master, 2x slaves and 3x sentinel processes on a single Windows, OSX or Linux Server. 

Instructions for running on Windows using MS OpenTech binaries (no software install req'd):

    git clone

    cd redis-config\sentinel3\windows

You can later stop all started instances with:


Google Cloud Click to Deploy Redis Walkthrough

The easiest Cloud service we found that could setup a highly available Redis Sentinel configuration was Google Clouds "Click to Deploy Redis" feature which we've added a walkthrough on as well as an example of how to connect to it using the C# RedisSentienl client.

Redis Stats and Redis Config

The RedisConfig class has been expanded to give you an alternative way to change default settings whilst the RedisStats class lets you inspect the state of your running Redis Clients.

OrmLite Converters

OrmLite has become a lot more customizable and extensible thanks to the internal redesign decoupling all custom logic for handling different Field Types into individual Type Converters. This redesign makes it possible to enhance or entirely replace how .NET Types are handled, or extend OrmLite to support new Types.

The release notes contains full docs on how to Create, Extend, Replace, Resolve and Modify OrmLite Converters. New Features made possible with new Converters include:

 - Being able to swap out SQL Server TimeSpan handling to use SQL Server `TIME` Type
 - Switch to your preferred readable text-based or compact binary Guid format
 - Change how DateTime is handled to always store Dates as LocalTime or Utc

SQL Server Special Type Converters!

Converters also made it possible to add support for SQL Server-specific SqlGeography, SqlGeometry and SqlHierarchyId Types. As these types require external dependencies they were packaged in a new ServiceStack.OrmLite.SqlServer.Converters NuGet package.

New SQL Server 2012 Dialect Provider

The new `SqlServer2012Dialect.Provider` is recommended for use with SQL Server 2012 and higher in order to take advantage of features in recent versions of SQL Server, currently it uses SQL Server's new OFFSET and FETCH support to enable more efficient paged queries.

Nested Typed Sub SqlExpressions

Sql.In has been expanded to support nesting and combining of multiple Typed SQL Expressions together in a single SQL Query, e.g:

    var usaCustomerIds = db.From<Customer>(c => c.Country == "USA").Select(c => c.Id);
    var usaCustomerOrders = db.Select(db.From<Order>()
        .Where(q => Sql.In(q.CustomerId, usaCustomerIds)));

Updated Dependencies

OrmLite includes the latest version of Dapper including Async API support in .NET 4.5 builds. All external RDBMS dependencies have also been upgraded to use the latest stable version available.

Encrypted Messaging

The authenticity of Encrypted Messages are now being verified with HMAC SHA-256, following an Encrypt-then-MAC strategy. 

The EncryptedMessagingFeature also added support for versioning multiple Private Keys allowing seamless 
transition to a new Private Key without affecting existing clients who have yet to adopt the latest Public Key. 

Swagger UI

 - The backend metadata for Swagger UI has been updated to Swagger 1.2 spec.
 - Username and Password added on Swagger UI to enable access to protected services (requires BasicAuth)

Auth Info Metadata Pages

The metadata pages now label which Services require Authentication, along with any Roles/Permission they need (if any).

Java Client

The net.servicestack:client Java package includes core functional utils required to run C#'s 101 LINQ Samples in Java:

Service Clients

All .NET Service Clients (inc JsonHttpClient) can now be used to send raw `string`, `byte[]` or `Stream` Request bodies in their custom Sync or Async API's, e.g:
    string json = "{\"Key\":1}";
    client.Post<SendRawResponse>("/sendraw", json);

    byte[] bytes = json.ToUtf8Bytes();
    client.Put<SendRawResponse>("/sendraw", bytes);

    Stream stream = new MemoryStream(bytes);
    await client.PostAsync<SendRawResponse>("/sendraw", stream);


 - A new community Azure Active Directory Auth Provider is available at  - MaxLoginAttempts option moved to AuthFeature and is supported in all User Auth Repositories
 - AuthFeature now regenerates new Session Cookies each time users login, can be disabled

Error Handling

 - New IHasStatusCode can be implemented by C# Exceptions to provide an alternative way to return HTTP Error Codes
 - Meta Dictionary added on ResponseStatus and ResponseError DTO's providing a place holder for additional context

The new `ToObjectDictionary()` and `FromObjectDictionary()` extension methods lets you treat POCO's like Data, e.g:

    var dto = new User
        FirstName = "First",
        LastName = "Last",
        Car = new Car { Age = 10, Name = "ZCar" },

    Dictionary<string,object> map = dtoUser.ToObjectDictionary();

    User user = (User)map.FromObjectDictionary(typeof(User));

These were the highlights, there's more features and the full details in the release notes:

Darren Reid's profile photo
Add a comment...
Hi all, I'm planning to do a cluster demon in .net. I'd like to use servicestack , but I'd like to know about data integrations. Can servicestack connect to oracle from mono linux ?
Demis Bellot's profile photo
The OrmLite.Oracle Dialect is a community supported provider which I don't think has been tested before on Linux. 
Add a comment...

Robin Lejeune

Discussion  - 
Hi @ all,
i´ve tried to debug Servicestack Ormlite but my Visual Studio cannot find the symbols. And yes i have read the wiki article :-) says he has only 4.0.40 and 4.0.43 and i have the latest NuGet release with 4.0.42.

Hope you can Help regards
Demis Bellot's profile photo
Hi, just noticed this post was flagged as spam.

Unfortunately SymbolSource is very unreliable where I had try to deploy it over 15 times and babysit it for over an hour to deploy the symbols for this release.

I've also published the latest symbols for this release over at:
Add a comment...

Stephen Brannan

Discussion  - 
Hi Demis,

Would it be possible for you to retro a bug fix back to V3? Our company ran into the Url unfriendly chars when the sessionid is created (fixed in v4.0.42). 

Here is the the fix in v4 I'm referring too...

If a retro fix isn't possible would a pull request be possible or know of a way for us to override CreateRandomSessionId some how? We are trying to avoid branching V3 at all cost here. 

Stephen Brannan's profile photo
Hey Demis,

Here's the PR...

Thanks again,
Add a comment...

Jacob Foshee

Discussion  - 
Howdy, I am trying to add an Azure Active Directory (AAD) auth provider, but fumbling along... AAD supports OAuth2. (It also supports OpenID Connect, but I don't see any OpenID Connect support or examples with ServiceStack.)

The first impedance mismatch is the terminology in the `OAuth2Provider` base class. OAuth2 uses terms ClientID and ClientSecret, not ConsumerKey/ConsumerSecret. So it does not seem on the face that the base class is really following OAuth2. 

The closest example I can find is `GithubAuthProvider` (Github is using OAuth2). See: and

So it would seem that is a better example of OAuth2 and it is in the wrong place...

So I'm seeking feedback or help. Maybe some refactoring of existing auth providers should be done before adding an AAD provider? Is anyone up for chatting about the best strategy to get an AAD provider up and running?

On a related note, is there any plan for an OpenID Connect base provider? (From what I know, it seems like it would sit on top of the OAuth2 provider).
Azure Active Directory (Azure AD) supports several of the most widely used authentication and authorization protocols. The topics in this section describe the supported protocols and their implementation in Azure AD. The topics included a review of supported claim types, an introduction to the ...
Demis Bellot's profile photo
In future if you prefer, you'll also be able to use ClientId/ClientSecret in Web.config AppSettings from this commit:
Add a comment...

Shlomo Shs

Discussion  - 
Where i can find ServiceStack road map for next .net frameworks?
Now that Microsoft roll out .net Core... How ServiceStack fit in?  
Ramon Moliner's profile photoDemis Bellot's profile photo
+Ramon Moliner Not yet but the full .NET FX (i.e. DNX451) is the first ASP.NET5 platform we're aiming to support.
Add a comment...

Demis Bellot

Discussion  - 
Hi ServiceStack & Xamarin Customers!

Xamarin has reached out to us and is looking to find more about ServiceStack Customers that also use Xamarin.iOS or Xamarin.Android. They're hoping to get feedback on mobile apps connecting to a ServiceStack back-ends and are potentially looking to feature some Customer Success stories. If you're using ServiceStack with Xamarin please let us know in a comment below or you can email

Hopefully the more Customers that they know about, the better support, docs and integration they'll be able to provide. So if you know of any Xamarin Apps that use ServiceStack please let us know!
Diomedes Ignacio Domínguez Ureña's profile photoMarc-Antoine Latour's profile photoLouis Fournier's profile photo
Hi Demis, Orckestra is currently building a couple of App using Xamarin and ServiceStack, I will send you a mail
Add a comment...

Lennart Berg

Discussion  - 
Hi Guys
I just needed a select with readlock (mysql SELECT ... FOR UPDATE ) during a transaction and found no way of doing that in Ormlite.
No read lock was seen on any transaction level - so i ended up writing the SQL by hand. ( which is bad since it locks me down to beeing mysql specific )

Am i missing a method to get a read lock in Ormlite somehow?
Demis Bellot's profile photoLennart Berg's profile photo
Yeah tried that, but all continue until the before locking meaning that all the values will overwrite each other due to the read value beeing old.
So quite meaningless to prevent race conditions
Add a comment...

Demis Bellot

Announcements  - 
v4.0.40 Released!

Java and Android Studio
We're happy to announce our new Native Types support for Java and Android Studio!
The ServiceStack IDEA plugin integrates with Android Studio to enable Add ServiceStack Reference functionality to provide a terse, typed and productive API for consuming ServiceStack Services from Android Apps.

TechStacks Android App
To demonstrate Java Native Types in action we've ported the Swift TechStacks iOS App to a native Java Android App to showcase the responsiveness and easy-of-use of leveraging Java Add ServiceStack Reference in Android Projects.

iOS-inspired Data Binding Example
As there's no formal data-binding solution in Android we've adopted a lightweight iOS-inspired Key-Value-Observable-like data-binding approach in Android TechStacks that should ease porting between native Swift iOS and Java Android Apps.

Functional Java Utils
The static class in the Java ServiceStack Client Library contains a number of common functional API's providing a cleaner and more robust alternative to working with Data than equivalent imperative code which is especially useful when working with Java 7 in Android which lacks any language or library support for functional programming.

Customer Forums moved to Discourse
We've moved the ServiceStack Customer Forums from Google+ over to Discourse as it provides better readability, richer markup, support for code samples, better searching and discoverability. The new Customer Forums is available at: When Signing up you'll need to ensure to use the exact same email that's registered in your active ServiceStack account or that's listed as a support contact at:

Swift Native Types upgraded to Swift 1.2
The latest stable release of Xcode 6.3 includes the new Swift 1.2 release that had a number of breaking language changes from the previous version. In this release both the Swift generated types in ServiceStack and the JsonServiceClient.swift client library have been upgraded to support Swift 1.2 language changes.

Merge Disconnected POCO Data Sets
There's a new `Merge` extension method can stitch disconnected POCO collections together as per their relationships defined in OrmLite's POCO References.

There are a number of other changes and enhancements added throughout the ServiceStack, details available in the release notes:
Demis Bellot's profile photoGraham Clark's profile photo
Ah ok, thanks!
Add a comment...

Stephen Brannan

Discussion  - 
 I have a situation where I work for two companies. Under the first one I am a v4 developer who has paid for ServiceStack appropriately (Company A). I'm also a developer for a separate company  (Company B) where they use v3. Unfortunately at this time Company B won't upgrade to v4 but they want to implement a Windows Auth Provider.  Is there anyway for Company B to pay for use of the Windows Auth Provider in v3 (without any support of course) ?
Demis Bellot's profile photoStephen Brannan's profile photo
Oh wow this is awesome! Thanks so much Demis! It's very much appreciated!
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:

Jason Lee

Discussion  - 
I am stuck using 3.5 for a particular client and wanted to use Angular js so I thought Service stack < v4 would work for me.  I got a service set up locally no problem but when trying to deploy to godaddy I just get a 404.  

Any ideas?  IIS7 btw
Jason Lee's profile photoDemis Bellot's profile photo
+Jason Lee here are examples of different configurations which may help:
Add a comment...

Rudy Alvarez

Discussion  - 
Hi Demis, 

I want to contribute some changes to the Auto Batched Requests feature,

I had two primary goals

1) enable parallel/sequential execution
2) enable execution of different types of request on the same batch

I started reading the code in and I did a first step that I believe is equivalent but maybe I'm missing something, I had the change here

Then, I did a first approximation to the objective #1 I had that code in this other branch

Can you please give them a look and see if this may be subject for a pull requests or if you can point me in the right direction to get this merged? (if you see this as an useful extension and compatible with the servicestack vision). 

Also if anyone here is using the auto batch feature and can test if this works in your use case, it will be appreciated. 

Demis Bellot's profile photoRudy Alvarez's profile photo
ook! I will, I remember putting wishes there jajaja. (y).  
Add a comment...
Hey all, I need some help from a ServiceStack expert :)  

Summary: Basically a major CMS that subscribes to ServiceStack (and uses some SS services for some components) is going to expose a public API, and is looking instead at doing it with OData\WebApi because it sounds like SS can't do these things, or it would be too much work.

Below is the message from them, can ANYONE debunk any of this or help push the decision back to SS?

1.The data model in the cms is mostly dynamic (dynamic modules, custom fields, related data), e.g. we don't know in advance the structure - hierarchy, related content,custom fields etc.. On the other hand we want to provide an automatic rest API OOB - e..g so you don't write code/inherit services etc. for each new dynamic module/type/custom field you add
 - This contradicts a bit with the ability to version and keep from breaking changes if the model changes - but in this case you will have to write your own Rest API's - which everyone is free to do.
2. We want to enable efficient and powerful data querying - for dynamic (unknown in advance) model so:
*   one can extract not just the base record but also related records. Say similar to what OData - $expand.
*  allow dynamic columns select queries - like OData $select - so the api returns just the data you need, and save bandwith/peformance etc,
* allow some standard query language - the OData $filter 
* Of course all this should be subject to additional permissions/security/authentication

3. WE wanted to have a way to expose metadata (data model) - so it is easier to integrate with external systems. For purposes like Data Integration, UI generation/scafolding etc. ODATA - CSDL. Of course - this metadata will be secured
6) We want to have a good client story. E.g. client sdk- so you dont build /parse the request /results to the API manually.  OData has already some good client sdk-s -for example

7)OData has good server side implementation support - say WebAPI/Odata. This can probably save us some implementation time.

8) IT might be easier to integrate with another enterprise system via OData. E.g. drivers, connectors etc exist for this protocol for many languages. You can actually connect say Excel and have the content data in 1 minute in a sheet.

To summarize the idea was to step on something - that is good enough to expose a completely dynamic(unknown in advance) model without the cms implementer writing a single line of code and also not re-invent the wheel in terms of rest standards=> endpoints conventions/query syntax/metadata exposure.
The considerations I see above are very valid if you want to have complete control over what you expose and you actually write code to do it. So sounds more like you need a framework to easily write custom REST services - but still write them?
Demis Bellot's profile photoSteve McNiven-Scott's profile photo
+Demis Bellot Thanks for the reply!

It's basically their own ORM that handles these dynamic objects.  So there's no option to yank that and use another ORM.  The dynamic object itself has extension methods like .GetValue<type>("ColumnName") .SetValue("Column", data).

HOW they plan to do it, I have no idea, I would just rather build a case here to develop a simpler faster API on SS.
Add a comment...

Demis Bellot

Announcements  - 
v4.0.42 Released!

This is a huge release that was a long time in the making :) Please see the release notes for the full details:

I'll do my best to summarize below:

There's a new JSON ServiceClient available based on Microsoft's async HttpClient instead of .NET's HttpWebRequest which can also be used with ModernHttpClient's thin wrappers over iOS's native NSURLSession or OkHttp on Android

Encrypted Messaging
Encrypted Messaging is an exciting new feature lets you use message-level encryption to Securely call any Service over unsecured HTTP! It includes a familiar productive end-to-end typed API that works with both JSON Service Clients. It requires minimal configuration and allows for flexible full-encryption or hybrid encryption strategies.

Eclipse Plugin
There's a new ServiceStackEclipse plugin providing cross-platform Add ServiceStack Reference integration with Eclipse on Windows, OSX and Linux!

Intellij Plugin
ServiceStack IDEA now supports Intellij Java Maven projects and is available from Intellij's Plugin Repository yielding a more stream-lined install experience.

ssutils.exe is a Command line ServiceStack Reference tool available in a single cross-platform .NET command-line .exe making it easy for build servers and automated tasks or command-line runners of your favorite text editors to easily Add and Update ServiceStack References!

Xamarin.Auth with ServiceStack
The new TechStacksAuth example repository shows how you can use the Xamarin.Auth Component to remotely Authenticate with back-end ServiceStack OAuth providers.

Custom Client Caching Strategy
The new filters added on Service Clients let you implement a custom caching strategy.

We've added new Client and Server features that make it easier to populate version numbers on API requests.

Cancellable Requests
The new CancellableRequestsFeature makes it easy to design long-running Services that can be cancelled by and independent request

AutoQuery Aggregates
AutoQuery now supports executing additional aggregate queries on the returned QueryResponse. It also adds response filters so you extend responses with you're own functionality, which includes a basic calculator example showing you how.

OrmLite Dynamic Result Sets
OrmLite has added support for returning unstructured result sets unknown at compile time in either a List<object>, Dictionary<string,object> or object return types.

*OrmLite DB Parameter API's*
There are new overloads which accept IDbDataParameter's allowing finer-grained control of custom parameterized queries.

Other OrmLite
 - Customize null values
 - Case Insensitive References
 - Enhanced CaptureSqlFilter
 - T4 Template support for Table Valued Functions

Enable Session Ids on QueryString
You can turn on specifying session ids via the QueryString, this makes it possible for IE9's SSE polyfills to support Authenticated clients.

Skip Password Verification for InProcess Requests
When enabled this lets InProcess Service Requests login as a specific user without needing to provide their password.

New CustomValidationFilter Filter
Another option for customizing Authentication validation

UserName Validation
The UserName validation for all Auth Repositories have been consolidated in a central location.

Configurable Session Expiry
Permanent and Temporary Sessions can now be configured separately with different Session Expiries.

 - New API's
 - Large performance improvement for saving large values (>8MB)

 - JsConfig.ExcludeDefaultValues reduces payloads by omitting properties with default values
 - Serialize any property or field annotated with the [DataMember] attribute, inc. private fields
 - Update RecyclableMemoryStream 
 - New extension methods

Updates to Swagger, automatic defaults for unannotated Services. More customizable behavior with attributes

 - Finer-grain control over what Services and Types are exported in WSDL's and XSD's.
 - Customizable SOAP Responses.

Simple Customer REST Example
Stand-alone Customer REST Example showing a complete DB example of creating a Typed Client / Server REST Service.

That's just the highlights, there's more features and the full details in the release notes:

John Magnusson's profile photoSergej Loch's profile photo
Add a comment...

James Wright

Discussion  - 
I believe I found a bug with ServiceStacks interaction with Swagger in regards to Enums.  Where do I submit issues to the ServiceStack repo?
Demis Bellot's profile photo
You can post any issues on:  - please provide any necessary info required to identify and repro the issue.
Add a comment...

ravi tuwar

Discussion  - 
What is the best way to migrate from WCF to ServiceStack with SQL Server as database, C# as code language?
Demis Bellot's profile photoАлена Шрамко's profile photo
Probably best to go through how to developer message-based services with ServiceStack and how it contrasts with WCF at:

If you have an existing WCF Service you should be able to extract the WCF Services implementation and port them to ServiceStack Services whilst being able to use a lot of your existing WCF DTO's and your existing ORM and registering any other dependencies you might have in ServiceStack's IOC (

If you want you can consider switching to ServiceStack's OrmLite which provides a nice light, typed SQL-like API for accessing most popular RDBMS's including Sql Server (, you will also be able to take advantage of AutoQuery to quickly develop data-driven services:
Add a comment...
We're using SS authentication and are running afould of Safari's "don't allow cookies from sites I've never visited" rule.

We have an SSO facility at that is used to authenticate users, and it sets the standard ss cookies, which visits to work fine for, but we have a web app at as well, and it fails to log in users if they've never visited * in their safari browser because of this rule.

What is the recommended way of dealing with this? To date our sites have all been * so accessing worked fine, but we're about to start making,, etc. and want to use the same API everywhere across our family of sites.
Dylan Beattie's profile photo
This isn't peculiar to Safari or to ServiceStack - it's a basic browser security rule that cookies aren't shared across domains. As you've already noted, you can share cookies across subdomains, so you can set a cookie at with a cookie domain of that's then accessible to, - but there's no way to share cookies across top-level domains. Which makes sense, if you think about it - what if your users were sending YOUR authentication cookies to

If you genuinely need this kind of federated authentication across multiple top-level domains, you'll need to look into something like OpenID or OAuth2 so that visitors to are invited to "Log in with MyCompany", they sign in via your centralised authentication server, and then redirected back to with the appropriate authentication tokens. Implemented properly, this only adds a single click to your user journey.

More info on cookie domains at:
Add a comment...

Liang Qin

Discussion  - 
Hey guys, I've been developing a small project with ServiceStack OrmLite for months, now I am getting the "The free-quota limit on '10 OrmLite Tables' has been reached" issue, I know that i should buy at least a Indie Developer license to proceed, but before that I wonder, would all users of my project (a winforms tool) need any additional license to run the program after I pay for my Indie Dev copy?? Thanks in advance for anyone who would help me!
Liang Qin's profile photoAB Utoyo's profile photo
hi liang:) . . any tutorial how to use ormlite in window desktop application using c# for dummy :).. thx for help :)
Add a comment...

Stephen Patten

Discussion  - 
I like to use ServiceStack to load test a database (oracle) in a staging environment, without cluttering up the existing schema with bogus data. Is there a way to get the Northwind schema and data loaded by using just OrmLite and some helper functions? If my memory serves me correctly I think I saw a similar feature in the RedisAdminUI, which I investigate shorty. 

Thank you,
Add a comment...

Ryan Britton

Discussion  - 
I posted this question on SO. Any input/experience in this regard would be appreciated....
Ryan Britton's profile photoBlake Blackshear's profile photo
We are going to run with mono as a self host daemon in production anyways. I hate managing Windows servers. I think our load is small enough. The load testing will let us know.
Add a comment...