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).

  1. Add Metrics.NET Adapter

    Add support for Metrics.NET: https://github.com/etishor/Metrics.NET

    They already have adapters for Nancy & Owin: https://github.com/etishor/Metrics.NET/tree/master/Src/Adapters

    I've also posted a question wheter the maintainer of Metrics.NET has any plan in doing it for ServiceStack in his repo: https://github.com/etishor/Metrics.NET/issues/101

    16 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  2. Allow Stored Procedure for Primary Key

    We would like to use a stored procedure to generate our primary keys in an OrmLite object. The default field almost can be used for this purpose. But I have to use the special version of Insert which only sets certain fields. However, there is no version of that method which also returns the new id generated for the row. Perhaps you could add an AutoIncrement attribute that allows you to specify a stored procedure. Or at least adda version of Insert that only sets certain fields, but still returns the new id.

    4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  3. CRUD operations for inherited objects

    Being able to CRUD operations for inherited objects. It's would be cool!

    Adding OrmLite support (full CRUD) for object like this:

    [Alias("base_table")]
    public class BaseObject
    {

    [AutoIncrement]
    
    [Alias("_id")]
    public int Id { get; set; }

    [Alias("_name")]
    [StringLength(250)]
    public string Name { get; set; }

    }

    [Alias("apply_table")]
    public class ApplyObject : BaseObject
    {

    [Alias("_some_property1")]
    
    [StringLength(250)]
    public string SomeProperty1 { get; set; }

    }

    6 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  4. Add PostFileWithRequest method in Java Client

    Can you add the PostFileWithRequest method in java client?
    It would be very useful to upload files from Android devices

    3 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  5. OpenID Connect Auth Provider

    "OpenID Connect (OIDC) is an authentication layer on top of OAuth 2.0, an authorization framework." The benefit to developers and consumers is a more simplified way to add a new Auth provider which would provide some standard user info.
    http://openid.net/connect/

    65 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    3 comments  ·  Flag idea as inappropriate…  ·  Admin →
  6. Enhance AutoQuery to Handle "OR"s in the Template Property of the QueryField Attribute

    In my AutoQuery service, one of my request DTOs uses a custom "NameSearch" property with a QueryField attribute with a Template which has ORs in it - "FirstName LIKE {Value} OR LastName LIKE {Value} OR ..." . I also have a boolean property "IsActive" which matches a field in the database table.

    When I use these two properties together in a query to the service - "?NameSearch=abc&IsActive=true" - the results contain some people who are inactive. I should have figured this out without a SQL trace, but when I did one, I noticed that this was caused by not having…

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  7. Ability to define JsConfig.IgnoreAttributesNamed at scope level

    I would like to be able to Ignore certain properties only when returning response from Web API i.e. during Serialization/ Deserialization. While using the same object for saving in Cache, I would like to have all the properties to stored in Cache. Having IgnoreAttributesNamed at scope level will allow me to do the same.

    4 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  8. Support oAuth2 login to Swagger API

    Swagger now support oAuth login page to create a access_token to apply to a oAuth protected API: http://developers-blog.helloreverb.com/enabling-oauth-with-swagger/

    Please could you add a similar capability to ServiceSatck.SwaggerFeature that enables SS developers to add a similar capability to their own APIS that are protected by oAuth.

    48 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  9. Inject ReplyClientFactory from RedisMqServer to MessageHandler<T>

    There's a ReplyClientFactory property on RedisMqServer, which is not used at all. I believe that it should be used to override the MessageHandler<T>.ReplyClientFactory property.

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  10. 9 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  11. Add a new method to IContainerAdapter interface to support Resolving with name parameters

    I am using ServiceStack with Autofac IoC.
    There is code provided for wiring up the AutofacIocAdapter as the default resolver for ServiceStack (instead of Funq).
    There are two method currently exposed on the IContanerAdapter interface which is used to expose wiring.
    It would be useful to expose another method to resolve registered components with named parameters .
    It would be very easy as the underlying IContainer interface already exposes this methed.

    So, something like

    public class AutofacIocAdapter : IContainerAdapter

    {
    
    private readonly IContainer _container;

    public AutofacIocAdapter(IContainer container)
    {
    _container = container;
    }

    public T Resolve&lt;T&gt;()
    {
    return _container.Resolve&lt;T&gt;();
    }

    public…

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  12. Ormlite Extend Transactions with ReadLock abilities

    Current transaction isolation levels do not prevent others from reading and modifying the same data.
    They all wait nice in line to be able to update the same rows, but there is no way of preventing them from overwriting the previous data, and no error message that the data you selected has become stale in between.

    An easy way to solve it to allow a way to lock the selected rows to assure that the current transaction is finished before the next one can read the value and do its own changes.

    This is easely done by just adding a…

    8 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  13. Per-Service Date Format

    Last time I asked it was an all or nothing thing...

    Basically the CMS we have started off with WCF as the default Date format for JSON.

    They then licensed SS and started building new components using SS, and globally (to maintain consistency) kept that crappy unreadable date format.

    So my problem is that I can't globally set ISO as the date format or the entire CMS backend just blows up.

    I would like to be able to attach an attribute to a service method to have it format the dates to ISO on a one-off basis as needed.

    3 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  14. Add convenience links on the API metadata page for parameterless GET requests.

    I would be nice to just click on a link for the GET requests and actually execute the request and see the output. Right now I have to look at the metadata page for the request, copy the url path, and then paste it into browser address tab.

    This probably would not be feasible for POST requests however, unless you want to get fancy with a button or something instead of a link.

    I'm also basically assuming that this would only work for requests with no parameters. Otherwise you'd have to make assumptions of some sort.

    3 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  15. Create an object that supports the coming Redis Cluster feature with v3.0

    Much like you have created a RedisSentinel object ... I have a need for a RedisCluster object that supports the new feature which is coming in v3.0. Thanks.

    129 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    12 comments  ·  Flag idea as inappropriate…  ·  Admin →
  16. Support Calls to .ToString() in SqlExpression Where Clause

    This feature is useful when you need to do STRING related operations on NON STRING types like INT.

    One use case is when you need to do pattern matching (used in searches) on an INT column. That would be great to be able to just write:

    q.Where(x => x.IntColumn.ToString().Contains("123"));

    which should generate the following in SQL Server:

    WHERE cast(IntColumn as VARCHAR) LIKE '%123%'

    Since this feature is not implemented we have to use something like this:

    q.Where("cast(IntColumn as VARCHAR) LIKE '%123%'");

    Which is not that good because it is not strongly typed. And also for that SqlExpression to work, OrmLiteUtils.IllegalSqlFragmentTokens…

    7 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Flag idea as inappropriate…  ·  Admin →
  17. 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#pragmaforeignkeys

    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…

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  18. OrmLite CodeFirst Schema Migrations

    Support to automatically update a db schema based on changes such as: adding/renaming and possibly removing a property or class.

    103 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    9 comments  ·  Flag idea as inappropriate…  ·  Admin →
  19. Abstraction for Cassandra and other common NoSQL option

    NoSQL is an important piece of technology nowadays. I would like to see if I could have an abstraction layer for each NoSQL support so that I can switch easily,.

    10 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  20. Azure DocumentDB caching provider

    Support Azure DocumentDB as an available caching provider for Azure hosts.

    23 votes
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    2 comments  ·  Flag idea as inappropriate…  ·  Admin →
  • Don't see your idea?

Feature Requests

Categories

Feedback and Knowledge Base