Feature Requests
Feature, docs and use-case samples requests for ServiceStack. If you can, focus on the end-user benefit / use-case, rather than the technical details so we can focus on the end-goal and free us to work on how best to achieve it. Features can also include supporting content, e.g. a starter project on how to use ServiceStack with another product (e.g. SS + SharePoint).
133 results found
-
Flag MyGet builds as nightly, beta, alpah, pre-release
If the MyGet builds are marked as pre-release then it will be easy to move between MyGet builds for the same version number and also easier to upgrade to the NuGet stable build when it is released.
I deploy to Azure Web Sites which does the nuget package restore and full solution build for me. In order to move between MyGet builds or move to the stable NuGet build, I have to log in and manually delete the package cache on every site. If the MyGet builds had their own unque version number, upgrades would be easier.
5 votesTo make it easier to upgrade we’re moving to an odd number versioning for pre-release MyGet packages and even number versions for official NuGet packages described in the release notes at:
-
Replace System.IO.MemoryStream with Microsoft.IO.RecycableMemoryStream
Refer to http://www.codeproject.com/Articles/873615/Announcing-Microsoft-IO-RecycableMemoryStream
Quote:
Microsoft.IO.RecyclableMemoryStream is a MemoryStream replacement that offers superior behavior for performance-critical systems. In particular it is optimized to do the following:Eliminate Large Object Heap allocations by using pooled buffers Avoid memory leaks by having a bounded pool size Avoid memory fragmentation Provide excellent debuggability Provide metrics for performance tracking
0 votesThis is now configurable from v4.0.38:
-
Enable foreign key constraint checks for Sqlite
Currently OrmLite's Sqlite adapter supports creation of foreign key constraints when using the ForeignKey attribute on your data classes. However the foreign keys aren't actually enforced at the database by default (for 'compatibility reasons').
I don't know when Sqlite added the feature, but it will check constraints if you send a pragma at the start of each connection:
http://www.sqlite.org/pragma.html#pragma_foreign_keys
I've tested a simple workaround by sending the pragma as a SQL statement in my service methods), and the constraints are enforced as expected. Cascade deletes work as expected too.
However this isn't optimal if you want your service code to…
4 votesThe EnableForeignKeysCheck/Async and DisableForeignKeysCheck/Async APIs are the RDBMS agnostic APIs for enabling/disabling FK constraints which in SQLite sets the foreign_keys PRAGMA.
There’s no state or concept of “prepending to first db request”, the right time to call it is after opening a DB Connection which you can wrap in your own Custom SqliteOrmLiteConnectionFactory as Franck shows in comments or behind a custom IDbConnection extension method that does it or if you want it called everytime you can register it on the IOrmLiteDialectProvider’s OnOpenConnection delegate which is also available on the OrmLiteConnectionFactory’s ConnectionFilter.
-
More Oauth/Oauth2 integration
It would be very interesting to have a better integration with oauth protocols.
Some ideas:
1. Authentication/authorization provided directly by SS. At moment is possible to use oauth, but only with some external libraries (DotNetOpenAuth or others).The Access Token could be released with some oauth permissions defined in a global configuration setting. When the client request an access token, the request must contains a list of permission (like facebook, twitter and others API)
The permissions can be used for authorize some services only if the oauth access token provided in the request is valid for it. For example with…
17 votesWe’ve improved OAuth integration in v4.5.8 where you can now Authenticate using an AccessToken in Facebook, Twitter, Github and Google Auth Providers:
http://docs.servicestack.net/releases/v4.5.8#integrated-facebook-twitter-and-google-logins
This feature now enables auto-Sign Ins in Mobile / Desktop Apps using a saved Access Token.
Please submit separate feature requests for any other individual features you’d like to see.
-
Service Stack OrmLite 4.0.34 does not return result set for async version
4.0.34 version of ormlite gives null for an async call
for example// user1 is not null in this case
var user1 = db.Single(db.From<Users>().Where(x => x.UserPartyId == userPartyId).Select());// user2 is null in this case
var user2 = await db.SingleAsync(db.From<Users>().Where(x => x.UserPartyId == userPartyId).Select());1 voteThis was reported and fixed in: https://github.com/ServiceStack/ServiceStack.OrmLite/pull/426
the fix is available in v4.0.35 that’s now on MyGet:
https://github.com/ServiceStack/ServiceStack/wiki/MyGetAlso please post future issues in: https://github.com/ServiceStack/Issues
This site only for enhancements / feature requests.
-
57 votes
This is now available in the latest v4.0.36 of ServiceStack. See the Release notes for more info:
https://github.com/ServiceStack/ServiceStack/blob/master/docs/2015/release-notes.md#xamarin-unified-api-support -
Allow LoadSelect to selectively load references
Akin to the EF "Include" method, enhance OrmLite's LoadSelect method to take an optional string array of references to load. For performance reasons, I don't always want to load all references to an object, particularly if its a central object like Account or User. As a coding efficiency measure, it'd be great to pass in a list of only the reference objects or properties that are relevant to the code snippet.
10 votesThis change is available from v4.0.37+ that’s now available on MyGet:
-
Support PostgreSQL array parameters
Currently to send in an integer array as a parameter, I have to use format.
var ids = "ARRAY[1,2,3]";
var sql = "SELECT 1 = ANY[{0}]".Fmt(ids);
Db.Query<Model>(sql);I would rather use syntax like this:
var ids = new int[] {1, 2, 3};
var sql = "SELECT 1 = ANY(@ids)";
Db.Query<Model>(sql, new { ids });9 votesYou can find our improved PostgreSQL Array support at:
https://github.com/ServiceStack/ServiceStack.OrmLite#custom-sql-using-postgresql-arrays
-
.UrlEncode(... bool lowerCase = true)
Possibility to choose UPPER Casing for URL Encoding's ie %2F, as many public API using OAuth use upper cased encoding for signing.
3 votesAn optional `upperCase` flag was added on UrlEncode to change case of urlencoded chars.
-
Customize Auth DTO Response
Currently if we want to customize the Auth DTO Response in Credential Auth Provider, we must to rewrite the Auth Feature,the Authentication Service and the Credential Provider.
It would be useful to be able to set a custom auth DTO Response.At this time there isn't a simple solution.
I found this post on stackoverflow that explains the problem in details:9 votesYou can use the Meta string Dictionary to extend the AuthenticateResponse with additional custom info, but we’re not planning on trying to support for switching the AuthenticateResponse DTO entirely and breaking the Service Contract.
-
AuthFeature().ServiceRoutes - Option to hide route /Auth
Add a property to Remove the /Auth route, in favor of only /Authenticate instead.
Currently, I've added the following to hide /Auth routes.
// This is a way to remove the /Auth route and leave /Authorize instead. We don't need 2 ServiceRoutes = new Dictionary<Type, string[]> {{ typeof(AuthenticateService), new[] { "/" + localize(LocalizedStrings.Authenticate), "/" + localize(LocalizedStrings.Authenticate) + "/{provider}" }}},
Maybe there is a better way? Or is this bad?
1 voteLike most plugins you can configure them when registering them, you can change it to only host Authenticate Services on `/authenticate` route with:
var authFeature = new AuthFeature(…);
authFeature.ServiceRoutes[typeof (AuthenticateService)] = new[] {
“/authenticate”,
“/authenticate/{provider}”,
};Plugins.Add(authFeature);
-
Endpoint Configuration Discovery
In WCF, I can create a udp endpoint discovery to allow client finding the service without knowing the endpoint addresses.
Is there a similar approach using restful servicestack so that the client could discover the end point addresses using some kind of discovery detection ?
13 votesService Gateway allows for a customizable gateway where there are now a couple of Service Discovery options listed at: https://github.com/ServiceStack/ServiceStack/wiki/Service-Discovery
-
add meta documentation page for response object
Right now only request object is parsed for ApiMember attributes to generate documentation page. We've added support to parse all properties and show documentation for "subtypes".
Is it that much more work to add documentation to parse response object in similar manner? And show documentation for it as well?
Ideally it'd be in sections on the meta doc page.
Request
request typesResponse
response typesI can take a stab at it, but might misdesign again.
4 votesshould be done in v4.0.32+ https://github.com/ServiceStack/ServiceStack/blob/master/release-notes.md#other
-
Redis implementation of MemoryServerEvents
Just it! I would like to use the SSE feature with load balancing.
3 votesWe’ve added a new Redis ServerEvents backend in v4.0.31 so you can now use Server Events in load-balanced/scale-out environments: http://tinyurl.com/redisserverevents
-
Implement SQL Server 2012 Paging with OFFSET and FETCH
Add and option to use "SQL Server 2012" features/dialect and use OFFSET and FETCH for paging.
The new SQL Server 2012 paging feature will offer better performance and generated sql will be easier to understand.
21 votesAdd new `SqlServer2012Dialect.Provider` with support for 2012’s new OFFSET/ROWS paging support in this commit: https://github.com/ServiceStack/ServiceStack.OrmLite/commit/f27901b4d5e1fdef4a3eadaeff8cc78cd34ba54e
This change is available from v4.0.43+ that’s now available on MyGet: https://github.com/ServiceStack/ServiceStack/wiki/MyGet
-
48 votes
Async support has now been added to OrmLite in v4.0.33, see release notes for details: https://github.com/ServiceStack/ServiceStack/blob/master/release-notes.md#ormlite-now-supports-async
-
AsyncRequestFilters
We are creating a api that uses authorization attribute request filter in all paths(except login, of course). The attribute request for authorization to another system. Because request filters are sync the request is blocked and waiting for response at this point. A solution can be that request filters can returns a Task. Something like this:
public override Task ProcessRequestAsync(IRequest httpReq, IResponse httpRes, string operationName){
…..... return Task.Factory.ContinueWhenAll(appHost.ApplyAsyncRequestFilters(httpReq, httpRes, request), tasks => httpRes.IsClosed ? null : GetResponse(httpReq, request)) .ContinueWith(tResponse => HandleResponse(tResponse.Result, response => { if (appHost.ApplyResponseFilters(httpReq, httpRes, response)) return null; if (responseContentType.Contains("jsv") && !string.IsNullOrEmpty(httpReq.QueryString["debug"])) return WriteDebugResponse(httpRes, response); if (doJsonp && !(response
1 voteSupport for Async Request Filters was added in v4.5.8:
http://docs.servicestack.net/releases/v4.5.8#async-global-request-filters
-
Create PCL/Silverlight version of MsgPackServiceClient
The MessagePack format seems pretty ideal for communication between a ServiceStack service and a Silverlight client. Unfortunately there is no PCL package for ServiceStack.MsgPack.
On top of that it would be useful to split the client and server parts into separate packages.
8 votesSilverlight/PCL is dead but ServiceStack.MsgPack supports both .NET v4.5 and .NET Standard 2.0 which supports most active .NET platforms.
-
Support SSL connection to Redis instances hosted as PaaS in public clouds such as Azure.
At this time, StackExchange.Redis is the only .Net library I can find that supports SSL connections to Azure Redis. I imagine others will follow suit. It would be useful to have SSL connection available in ServiceStack as well. Thanks.
34 votesSSL Support was added to ServiceStack.Redis in v4.0.33. We’ve alsocreated a new Getting Started page for connecting ServiceStack.Redis with Azure Redis at:
https://github.com/ServiceStack/ServiceStack/wiki/Secure-SSL-Redis-connections-to-Azure-Redis -
GZip/Deflate on PCL clients
Support http compression on clients (Xamarin/sl5) with Microsoft Compression BCL library
20 votesShould be possible with the new HttpClient-based JsonHttpClient released in v4.0.42: https://github.com/ServiceStack/ServiceStack/wiki/C%23-client#jsonhttpclient
This MSDN Article shows how to enable it using a custom HttpClientHandler: http://blogs.msdn.com/b/dotnet/archive/2013/06/06/portable-compression-and-httpclient-working-together.aspx
- Don't see your idea?