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
-
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 voteThis should’ve been resolved a while ago, for speedy resolution of bugs/issues, please instead submit them to our Issue Tracker:
-
Exclude or Include by route prefix/subfix when add servicestack reference
when add a service stack reference we can use include types and exclude types.
could you add include / exclude by route.
so, we can configure reference like this way.
//include route "/mobile%"
or
//include route "%mobile%"1 voteThe IncludeTypes DTO option provides a couple of different wildcards for specifying types:
http://docs.servicestack.net/csharp-add-servicestack-reference#includetypes
-
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 voteJust use a Request Filter, e.g:
var client = new JsonServiceClient(baseUrl) {
RequestFilter = req => req.Referer = referer
}; -
Create MongoDB AuthRepository for .net core
The mongo driver is available on .net core but needs a nuget spec for it.
1 vote.NET Core support for MongoDbAuthRepository was added in v5.6, see release notes for how to easily configure it into existing ASP.NET Core Apps:
https://docs.servicestack.net/releases/v5.6#mix-in-features-into-aspnet-core-apps
-
first install Method not found: 'Void ServiceStack.JS.Configure()'.
Line 7: protected void Application_Start(object sender, EventArgs e)
Line 8: {
Line 9: new AppHost().Init();
Line 10:
Line 11: }1 voteYou likely have dirty versions installed. Ensure all dependencies are referencing the same version of ServiceStack, clean your NuGet cache (e.g. `nuget locals all -clear`) then restore.
Please submit future issues to https://github.com/ServiceStack/Issues
-
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 votewasm has been added to ServiceStack from v5.1.1 which is now available on MyGet:
http://docs.servicestack.net/myget -
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 voteThis is now added by default from v5.1.1 on MyGet
-
Add SqlListLazy to OrmLite
When using raw SQL, due to having complex CTE queries, that does not start with
SELECT
but rather withWITH
, theSqlList
method loads everything in one go.
This is unfortunate when the result set is large, and we would like to process one row at a time, and avoid the memory overhead, and waiting time, of getting the whole result set at once.The
SelectLazy
would have solved this problem, if it had supported any arbitrary SQL, but it does not.
According to the documentationSelectLazy
can do this if the SQL starts withSELECT
however, for our…1 voteThis should now be supported using the existing `SelectLazy` APIs from v5.7.1+ that’s now available on MyGet.
-
mix alias <name> <url>
Would be nice to specify easy to remember alias for custom gist.
1 voteLocal aliases are now implemented, examples at:
https://sharpscript.net/sharp-apps/app-index#app-local-aliases
In addition The global mix directory, i.e. provides short alias + description & tags to help with discovery.
https://gist.github.com/gistlyn/9b32b03f207a191099137429051ebde8
Please leave a comment on that gist with the alias, link, description, tags you want added.
-
Expose cancellable async methods in clients through an interface
IHttpRestClientAsync exposes various method-specific async methods as well as SendAsync.
SendAsync has a cancellation token parameter in its signature:
Task<TResponse> SendAsync<TResponse>(string httpMethod, string absoluteUrl, object request, CancellationToken token = default);
while other methods (GetAsync, PostAsync etc) don't
Implementations of IHttpRestClientAsync (like JsonHttpClient) do have the methods which support then token:
public Task<TResponse> GetAsync<TResponse>(IReturn<TResponse> requestDto, CancellationToken token) => SendAsync<TResponse>(HttpMethods.Get, ResolveTypedUrl(HttpMethods.Get, requestDto), null, token);
and in fact all the method-specific implementations just call SendAsync under the hood.
Without token-aware methods exposed through an interface I cannot use them in a depencency-injected IServiceClient and its derivatives. They are only usable if…
1 voteYeah the clients async interfaces weren’t ideal, it started from the initial impl of the .NET WebRequest clients being implemented using the older APM model which didn’t use them. Other implementations just kept the same API.
Anyway since it’s a source-compatible change (will require a rebuild after upgrade), I’ve added an optional CancellationToken to all Async Service Client APIs in this commit:
https://github.com/ServiceStack/ServiceStack/commit/dc6a281e80987b522c218bc82ce9cfefb111ea86
This change is now available from v5.8.1 that’s now available on MyGet:
-
Make servicestack compatible with AWS lambda
As it stands currently serverless is the future of application development . With services like serverless.com and the benefit these being to developers in terms of low / no touch deployments , massive cost savings and infinite scalability, it's clear that serverless is here to stay.
Many companies like us - Moosend.com - have invested years in creating microservices on Servicestack. Typically the service platform can't dictate the infrastructure architecture. Therefore now that we have decided to move a lot of our services over to AWS and Lambda we face the dilemma of having to pick between lambda and servicestack…
1 voteOur aws-lambda template is a pre-configured template of ServiceStack for AWS Lambda
https://github.com/NetCoreTemplates/aws-lambdaA customizable project template can be created from out Getting Started page:
https://servicestack.net/start -
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:
-
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.ProductIDand 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 votesIf you have MSSQL 2012+ you can use `SqlServer2012Dialect.Provider` and it will use a more optimal paging query.
Please submit any bugs/issues to our issue tracker instead:
- Don't see your idea?