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. Refactor to use HttpRequestBase and HttpResponseBase

    Much of the existing code implements IHttpRequest and IHttpResponse interfaces and writes complete code for implementing these. That was necessary before the redesign in 4.5 implemented mockable versions of the non-inheritable old HttpResponse classes.

    I think it can reduce the amount of code in SS and enable use to not need to use global items like HttpContext.Current.Request which results in - non-testable controllers.

    The change to help the above situation I implemented grew out of scope, but thought it worthwhile to explore for a later version.

    https://groups.google.com/forum/#!searchin/servicestack/httpcontextbase/servicestack/fpr-QlOH-dY/PFtbLXaW-IQJ

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    4 comments  ·  Flag idea as inappropriate…  ·  Admin →
  2. 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. Would love a SQL Server Cache Client

    We're an all MSFT shop, not much opportunity to use Memcache or Redis. A SQL Server Cache Client would be very useful.

    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 →
  4. 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 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. Bug: gateway also changes razor view that will be selected

    I have the following code

    ```
    public class EditAccountAddressPageService : ServiceBase

    {
    
    public object Get(EditAccountAddressPage request)
    {
    return Gateway.Send(new GetAddress() { AddressId = request.Id });
    }
    }

    ```

    The problem is the razor view taken now is GetAddress.cshtml

    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 →
  6. Session data Persistance on login

    I am building a webshop/ecommerce platform with:
    * an extension on CredentialsAuthProvider.
    * And an extension on the AuthUserSession with

    on login want to persist the CartId. but i found the source code does reset the session on login. But this part is not overrideable.

    i made a pull request. please check it, adjust it to the way you work.
    https://github.com/ServiceStack/ServiceStack/pull/1067

    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. WebServiceException ToString Overrride

    Hi, currently WebServiceException does not override to string , so that the base ToString() implementation which returns quite "unusefull" info

    I suggest to override the ToString method of WebServiceException
    to add info such as errorCode, errorMessage, StatusCode, .Responsestatus.Errors .. etc ..

    That would turn usefull, expecially when logging, since most logging mechanism dump the ex.ToString() ..

    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 →
  8. Provide option to set Referer header on service client.

    Due to it being a restricted header, the referer cannot be set using the standard header methods. In order to set the referer on a standard http web request, you must use the referer property. I would like to suggest that this header be accessible from the client.

    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 →
  9. Add an overload of PostFileWithRequest which accepts progress callback

    PostFileWithRequest works great, but user experience isn't great when this method is used to post large files (20+MB or even smaller files over a slow connection) to the server because there's no callback for progress notification.

    Additionally, this method isn't async in SL5 builds, but we can work around this. We can't work around missing progress callback though.

    Looking at the implementation of this method, this should be fairly easy to do. I will most likely submit a pull request with the implementation over the weekend.

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    completed  ·  5 comments  ·  Flag idea as inappropriate…  ·  Admin →
  10. Add TypeScript reference for WebStorm

    ServiceStack already has a plugin for IntelliJ Idea to generate typed requests, and for Visual Studio to generate TypeScript models. It would be nice to combine both of them in a WebStorm support for TypeScript models generation from a ServiceStack service.

    1 vote
    Vote
    Sign in
    (thinking…)
    Sign in with: Facebook Google
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    completed  ·  1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  11. PocoDynamo - Support Generic Types

    We're interested in purchasing licenses for ServiceStack. Particularly, we're interested in using the ServiceStack.Aws component. However, while evaluating it, we noticed that the PocoDynamo implementation fails to support generic types.

    Currently, if a table is registered using a generic type (i.e. db.RegisterTable<GenericPoco<Poco>()) , it fails because the name used for the table does not abide by DynamoDB's rules for Table Name.

    I have local modifications of the ServiceStack.Aws source that allows for generic types definitions to be registered, including tests showing it working. I can submit this code to somebody on your team if you like.

    1 vote
    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 →
  12. ServiceStack.Razor Reference is System.Web.Razor, Version=2.0.0.0, It is older version

    ServiceStack.Razor

    &lt;Reference Include=&quot;System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL&quot;&gt;
    
    &lt;SpecificVersion&gt;False&lt;/SpecificVersion&gt;
    &lt;HintPath&gt;..\..\lib\System.Web.Razor.dll&lt;/HintPath&gt;
    &lt;/Reference&gt;

    replace to(use newest lib):

    &lt;Reference Include=&quot;System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL&quot;&gt;
    
    &lt;HintPath&gt;..\..\packages\Microsoft.AspNet.Razor.3.2.3\lib\net45\System.Web.Razor.dll&lt;/HintPath&gt;
    &lt;Private&gt;True&lt;/Private&gt;
    &lt;/Reference&gt;

    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 →
  13. 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 =&gt; httpRes.IsClosed ? null : GetResponse(httpReq, request))
    .ContinueWith(tResponse =&gt; HandleResponse(tResponse.Result, response =&gt;
    {
    if (appHost.ApplyResponseFilters(httpReq, httpRes, response))
    return null;

    if (responseContentType.Contains(&quot;jsv&quot;) &amp;&amp; !string.IsNullOrEmpty(httpReq.QueryString[&quot;debug&quot;]))
    return WriteDebugResponse(httpRes, response);

    if (doJsonp &amp;&amp; !(response…

    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 →
  14. Add ".wasm" to AllowFileExtensions and associate MimeType "application/wasm"

    WebAssembly is a new binary format for static files. The official site has more info. https://webassembly.org/

    Google for webassembly mimetype w3c will return many results showing the addition of this file extension and Mimetype in other mainstream servers.

    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 →
  15. 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&#39;t need 2
    
    ServiceRoutes = new Dictionary&lt;Type, string[]&gt; {{ typeof(AuthenticateService), new[] { &quot;/&quot; + localize(LocalizedStrings.Authenticate), &quot;/&quot; + localize(LocalizedStrings.Authenticate) + &quot;/{provider}&quot; }}},

    Maybe there is a better way? Or is this bad?

    1 vote
    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 →

    Like 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);

  16. mix alias <name> <url>

    Would be nice to specify easy to remember alias for custom gist.

    1 vote
    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. Add ".dll" to AllowFileExtension, and add dll => "application/octet-stream" MimeTypes

    The new WebAssembly feature being added to mainstream browsers will download .dll files to the browser. To make it possible to serve static .dll fiiles by default, please add .dll files as mimeType application/octet-stream, and allow these types of files by default.

    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. pagination bug mssql

    We have a view:

    `CREATE VIEW StockInformation AS SELECT dbo.Product.Code AS ItemCode, dbo.Warehouse.Code AS WarehouseCode, dbo.StockIndicator.Code AS StockIndicatorCode, dbo.Stock.StockOnShelve, dbo.Stock.StockAvailable,

                         dbo.Stock.StockPurchaseBackorder, dbo.Stock.StockFirstPurchaseDeliveryDate
    

    FROM dbo.Stock INNER JOIN

                         dbo.Warehouse ON dbo.Stock.WarehouseID = dbo.Warehouse.WarehouseID INNER JOIN
    
    dbo.StockIndicator ON dbo.Stock.StockIndicatorID = dbo.StockIndicator.StockIndicatorID RIGHT OUTER JOIN
    dbo.Product ON dbo.Stock.ProductID = dbo.Product.ProductID`

    and the following query:

    var stocks = con.Select<StockInformation>(con.From<StockInformation>().OrderBy(x=> x.ItemCode).Limit(pageSize * pageNumber, pageSize));

    The first page results into query:

    SELECT TOP [pageSize] ... FROM StockInformation.

    The second query looks like this:

    SELECT * FROM (SELECT "ItemCode", "WarehouseCode", "StockIndicatorCode", "StockOnShelve", "StockAvailable", "StockPurchaseBackorder", "StockFirstPurchaseDeliveryDate", ROW_NUMBER() OVER (ORDER BY "StockInformation"."ItemCode") As RowNum

    FROM "StockInformation") AS RowConstrainedResult WHERE RowNum…

    0 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 →
  19. 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 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 →
1 2 3 4 6 Next →
  • Don't see your idea?

Feature Requests

Categories

Feedback and Knowledge Base