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. Allow Abstract Validators where generic is an Interface to run as part of request cycle.

    When creating a validator class that extends AbstractValidator<T>, the generic must be a concrete class for the validation to actually run once that validator is registered. It would be nice if I could define several interfaces for my messages that I want specific shared validation run against, and then just register a validator for that interface, and have the validation run against any message that comes in that implements that interface.

    I know there are ways to do this through request filters, as well as through attributes on the messages, but the attributes requires having to pull more dependencies into…

    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 →
  2. Localize Login redirect

    our site has the following route format: /[Locale]/RestOfPath

    The problem is that the redirect url always redirects to /Login instead of /[Locale]/Login. Could you turn AuthenticateAttribute.DoHtmlRedirectIfConfigured into a static Func instead of a static method so it is overridable?

    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 →
  3. pagination

    Add support for pagination in queries with dynamodb.

    Actually, when you set "limit" in Query or Scan methods, the first elements are obtained. This could be the first page. but there is no method that enables you obtain the second or third page.

    Maybe, you can add a GetPage method, that returns a collection wrapper, inherited from Collection<T>. This wrapper could have the last evaluated key.

    Then, GetPage method, could accept a query or scan expression, a page size and the last evaluated key

    This could be very usefull for applications that needs paginate some results but don't need retrieve…

    31 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 →
  4. auto update http://github.servicestack.net/

    http://github.servicestack.net/ss_admin/autoquery/QueryRepoCommits

    seems not to be updated since 2015-09-26. Maybe put an auto pull on the git repos behind it?

    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 →
  5. Redis Cache value compression

    Redis and clients are typically IO bound and the IO costs are typically at least 2 orders of magnitude in respect to the rest of the request/reply sequence. Smaller payloads will give you higher throughput and lower latencies.

    The ICacheClient interface should provide an option to enable compression. This will store a compressed string representation in the cache store (except in memory). Default should be false.

    Some interesting reads:
    http://stackoverflow.com/questions/6556631/compressing-strings-before-putting-them-in-redis-does-it-make-sense
    http://stackoverflow.com/questions/10909602/does-redis-db-has-built-in-compression-option

    2 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 →
  6. Optionally decorate DTO's with OrmLite attributes

    For very small Xamarin Applications, it makes sense to use the same data models in the App as in the API backend.
    This could easily be achieved, if the OrmLite attributes such as [PrimaryKey], [Unique] and so on are exposed.
    This would of course be an opt-in behaviour, because by default those attributes are for internal usage.

    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. Parcelable in Android Studio auto-generated dtos

    Can you make parcelable the auto-generated dtos by Android plugin for Android Studio?

    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 →
  8. Allow DateHandler to be specified at field level

    It is currently possible to serialize dates as ISO8601DateOnly and ISO8601.

    https://gist.github.com/georgehemmings/42d9841913d1da01e91b

    The date handler applies to all DateTime fields in the object.

    Where a DateTime field is representing only a date, it would be nice to emit this in ISO8601DateOnly but leaving any other DateTimes to emit in full ISO8601 format.

    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 →
  9. Support Changing ViewPages directory

    Support Allowing Custom ViewPages directory
    Right now the convention of using a folder in root works great for the general case (We've been on service stack razor for at least a year). With that said we hit the point that we need to move the views into a subfolder to easier support a part of the subcontrol strategy.

    Would love to have the convention be default and a easy way to change the base folder for vies on the apphost configure method.

    6 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 →
  10. smal change in IndexOperationsControl.RenderRow

    You could do a little modification to the IndexOperationsControl.RenderRow method, so that no row for an operation is rendered if no formats are available in the calling scenario.
    Currently, if I protect an operation with
    [Restrict(VisibilityTo = RequestAttributes.InternalNetworkAccess | RequestAttributes.AnyFormat)]
    and i connect from an external network I see the operation with all formats disabled. It would be better not to see the operation at all.

    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 →
  11. 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/

    62 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 →
  12. 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 →
  13. Allow the NativeTypes clients to support the standard .Net format for TimeSpan

    When setting the TimeSpanHandler to use TimeSpanHandler.StandardFormat the NativeType clients are not able to deserialize TimeSpans because they are expecting the format to be XSD duration.

    5 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. 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 →
  15. 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 →
  16. 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 →
  17. 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 →
  18. 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 →
  19. 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 →
  20. 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 →
  • Don't see your idea?

Feature Requests

Feedback and Knowledge Base