v4.0.54 Released!

v4.0.54 released!


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:

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: Instant AutoQuery UI Viewer to query any AutoQuery Service - 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 chat.servicestack.net 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: Using Server Events to create a real-time Android Chat App with Xamarin.Android - YouTube

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: http://redux.servicestack.net

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: GitHub - ServiceStackApps/typescript-redux: Adventures in TypeScript, React + Redux


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

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: https://servicestack.net/release-notes


This topic is now pinned. It will appear at the top of its category until it is unpinned by staff for everyone, or by individual users for themselves.

This topic is now a banner. It will appear at the top of every page until it is dismissed by the user.

This topic is no longer a banner. It will no longer appear at the top of every page.

This topic is now unpinned. It will no longer appear at the top of its category.

This topic is now pinned globally. It will appear at the top of its category and all topic lists until it is unpinned by staff for everyone, or by individual users for themselves.

I just tried out the new [EnumAsInt] …it still creates the table field as a varchar(max) rather than an int, wondering if there is a good reason for this. I’ll stick with the workaround.

We’ve got tests showing EnumAsInt creates an integer column.

Are you sure you’re referencing all the latest v4.0.54 packages?

It goes on the Enum Type itself as an alternative to [Flags] not the property.

Cool, wasn’t previously aware of [Flags], have to navigate back to 2014 release notes to find.

This topic is now unpinned. It will no longer appear at the top of its category.