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).
33 results found
-
OrmLite: Add support for CompositeKey attribute
My suggestion is to Add support for CompositeKey attribute for OrmLite, see
https://forums.servicestack.net/t/compositekeyattribute-does-not-create-any-composite-key-on-the-table/Thank you.
3 votesanswered in forums
-
OrmLite: Add Fluent API as alternative to decorating classes with attributes
My suggestion is to add a Fluent API as alternative to decorating classes with attributes.
This decouples the classes from bloated attribute declarations and makes them more modular and decoupled.
3 votesServiceStack lets you programmatically add attributes to types used in its libraries, e.g:
https://docs.servicestack.net/reflection-utils#dynamically-adding-attributes
This can be made less verbose with custom extension methods if desired, we’re not adding any alternative fluent support beyond this.
-
app.UseAuthorization() on .NET Core WebApi 2.1 built on .NET Framework.
I was referencing your topic: https://docs.servicestack.net/templates-corefx and I am trying to get the [Authroize] tag working on .NET Core 2.1 Web API project built on .NET Framework. There is no IAppBuilder.UseAuthorization(). I wrote my own JWT custom auth handler and tried the following in the Startup:
services.AddAuthentication("Basic")
.AddScheme<BasicAuthenticationOptions, EdcAuthenticationHandler>("Basic", null);services.AddAuthorization();
I also have
app.UseAuthentication();but, again, there is no app.UseAuthorization()
I want to be able to add [Authorize] attributes (with roles as well) and be able to access the User object inside my controller methods.
Any insight would be appreciated.
1 voteIt sounds like you want to use create a Web API project using ASP.NET Core Identity Auth.
ServiceStack is its own entirely different software stack that has its own Auth Provider implementation & [Authenticate] attribute:
https://docs.servicestack.net/authentication-and-authorization
and its own JWT Provider:
https://docs.servicestack.net/jwt-authprovider
We don’t support integration with ASP.NET Identity Auth in .NET Framework projects only in .NET Core projects:
https://docs.servicestack.net/authentication-identity-aspnet -
ormlite - pre/post full events (pre: insert/update, post:insert/update)
Even though this is a lite/micro orm, these events are fundamentals and making the database fully auditable (by infrastructure).
I have never used an ORM without using all of these events.
Today only the pre-events are available.
There is a possibility to run code after and before you execute .save(), still.this is very pitfully...
Also, the events are static. it is a nightmare to get external context to inside the event. such as current logedin user...
6 votesThis comment contains misguided assumptions with how ORM’s work which require Singleton access to Request Contexts in order to access per-request context data like authenticated user info, explained in more detail with recommended solutions in this follow up thread:
https://forums.servicestack.net/t/ormlite-createdby-lastupdatedby/8288
-
YAML
Please add support to YAML format.
Tags: ServiceStack.Text YAML serialization format
9 votesThere’s no plans for implementing and maintaining our own YAML serializer. Please refer to the docs for how you can register your own Custom Media Types like YAML:
https://docs.servicestack.net/serialization-deserialization#custom-media-types
-
Select and copy key values
When displaying a hash, it's impossible to select field or value to copy them
3 votesHave no idea what this feature request is about, please include all details and context so it’s absolutely clear what is being requested and the use-case it’s meant for.
-
Add fast TCP endpoint
Add the most efficient remote endpoint for consuming ServiceStack services.
Ideas: use https://github.com/nanomsg/nanomsg (by author and successor to ZeroMQ in C).
Advantages: Abstracts IPC/TPC/InMemory for picking the most efficient transport. Can easily interoperate with other NanoMsg clients on other platforms. C is nice to embed than C++.
Disadvantages: Still in Alpha, unclear when it will be stable/safe to use. Still native, requires effort to use 32/64 bit architectures and cross-platform on Mono.Alternative: Build endpoint on raw TCP sockets in C# using something like Redis wire protocol for efficient transfer of message payloads. Could imitate operation on redis-server for interoperability…
105 votesgRPC offers a number of efficient communication channels over a persistent multi-plexed HTTP/2 connection using compact/efficient protocol buffers which would superseed most of the value a custom TCP channel would offer now that ServiceStack gRPC has been released:
https://docs.servicestack.net/grpcC# / F# / VB.NET Apps can also take advantage of our smart generic service clients to offer the simplest and richest development UX:
https://docs.servicestack.net/grpc-generic -
AutoQuery additions/flexibility
It would be useful to have AutoQueries that could do
1. custom joins (currently, you have to write a service 'override')
2. generic, dynamic, or object as a return type!Potentially makes writing dozens of reports easy to maintain (for our department) because they are maintained from their source objects instead of having a DTO for each one, considering that regular joins already work that way where they do not require a custom return type to return!
3 votesCustom joins can’t be declared in a class definition, you would need to use a Custom AutoQuery implementation.
AutoQuery Services require populating a Typed Response DTO which is what’s needed to indicate which columns to return. Unknown return types can’t be documented in metadata services and can’t be consumed in any supported language which requires deserializing into a known type.
-
Release separate nuget packages for netcore.
Hello. I cannot to use ServiceStack.Api.Swagger in VS2017 because it automagically selects net461 version of the library. This can be a quite generic problem for packages containing dll for several platforms. VS2017 project format disallows me to use hint path (it uses target framework attribute) to explicitly select library. Thus, if your net461 exe app refers to netstandard project that uses Servicestack.Core you cannot refer any "mixed" nuget from exe. Please fix it for swagger. Thank you for consideration.
1 voteAll the available .NET Core only NuGet packages are listed on: http://docs.servicestack.net/templates-corefx#reference-core-packages
Swagger is not included because it implements the older and deprecated Swagger 1.2 spec. Reference ServiceStack.Api.OpenApi.Core NuGet package instead to reference the newer Swagger 2.0 version.
If for some reason you need to use the older version you can build it from https://github.com/ServiceStack/ServiceStack/tree/master/src/ServiceStack.Api.Swagger
-
Allow API documentation with comments
This may be related to this:
https://servicestack.uservoice.com/forums/176786-feature-requests/suggestions/4459106-api-explorer-meta-data-enhancementsWe have a lot of documentation to fill in, and while the Attributes are great for fine-grained details (if you need them), they are cumbersome with longer descriptions. It would be nice if I could just /// my classes / properties and ServiceStack would fill that in for the Notes (or maybe it's summary?). Maybe a swagger plugin option of ScanCommentsForNotes?
3 votesThe libraries don’t have access to comments which aren’t embedded in the .dll. You can use the `[Description()]` or Description property in `[Api*]` attributes to emit comments in DTOs.
-
Support multiple API (service contracts) on the same AppHost
I would love to see that the AppHost supports multiple "API:s", or service contract, hosted on the same AppHost (and thus the same port), or several differnt AppHosts but using the same port...
I am using the sefl-hosted solution and I dont have a separate web server to do some mod-rewrites, reverse proxies and such (which is messy anyways).
The reason:
I have several "webservices", Ws1, Ws2 etc, and they often have some identical DTOs/methods (such as Login etc). I want to use only one IP:port that then makes these different webservices available under a prefixed path.So, for example,…
3 votesBeing able to invoke a Service by sending an encapsulated Request DTO which can only be realized by a single implementation is fundamental to ServiceStack.
-
Add documentation for the PublishMessage in the IRedisClient
In the IRedisClient version 4.0.0, there is a method with signature:
long PublishMessage(string toChannel, string message);There is no documentation in the code indicating what the return type of "long" indicates. Having to go online to look this up is rather tedious, and seems to be a common problem with the documentation.
1 voteMost IRedisClient APIs are a thin wrapper over Redis APIs where PublishMessage calls Redis PUBLISH command: https://redis.io/commands/publish
Which returns:
Integer reply: the number of clients that received the message. -
Rate ServiceStack Customer Support Agents
I think having a rating on the developers who respond would help the company allocate resources more appropriately. Basically a 5 star rating system if you want to rate your interaction with their people, with the ability to make a comment about the quality of the service your received.
3 votesThis site is for feature requests you would like implemented in ServiceStack’s Software.
For completeness, I understand you’re frustrated and requesting this in response to your feature request being declined:
and my response to your comments on:
-
Move all extension methods into separate namespace(s)
When writing code that uses ServiceStack, its fairly common to import the ServiceStack namespace (or others) via a using statement. Doing so will make all the extension methods within that namespace available.
I have experienced several cases where I have my own custom extension methods with a conflicting signature that I would like to use instead of the ServiceStack method. However there is no ideal way to disambiguate them currently. My only choices are:
1) Move code around into separate files so that I only import either the ServiceStack namespace or my namespace.
2) Refer to the proper method by…
1 voteThat’s the opposite of how ServiceStack is designed, hurts discoverability, increases the friction and support burden due to broken references and would result in unacceptable breaking changes. The only extension methods we plan on removing are those duplicated by newer versions of the .NET Framework.
-
Refactor IRedisSubscription interface to be more intuitive
https://github.com/ServiceStack/ServiceStack.Redis/wiki/RedisPubSub gives a good example of how to use pub sub pattern. However, from the documentation that is provided with the API, I don't think there's a way to infer that in the property Action<string, string> OnMessage { get; set; } the first param is the channel,
and the second one is the msg. Other functions are pretty self explanatory, but for this one, I don't feel like I should have to thumb through a bunch of examples to have to figure out how to use it.
A more self explanatory pattern would be to have an actual event OnMessage…3 votesThe OnMessage is documented on both the wiki and the home page:
https://github.com/ServiceStack/ServiceStack.Redis#usageIf the API isn’t self-explanatory checkout the docs to see if there’s an example, otherwise feel free to ask a question on our Forums or StackOverflow.
I’ve added API docs in this commit https://github.com/ServiceStack/ServiceStack.Redis/commit/cc5f4ba416d5c904a9b483adf92a504c2e9e9dd9
But we wont be making any breaking changes to existing APIs.
-
Implement BCrypt or SCrypt for IHashProvider
ServiceStack/Auth/SaltedHash.cs appears to implement one round of a HashAlgorithm. This constrains the user to KeyedHashAlgorithm, MD5, RIPEMD160, SHA1, SHA256, SHA384, and SHA512, none of which are suitable for hashing passwords.
Would the ServiceStack project consider one of the existing BCrypt or SCrypt implementations in the GitHub community (for example viniciuschiele/Scrypt) or does it require that the library be professionally audited by penetration testers?
Would it accept a contribution given a valid CLA?
1 voteNo we can’t force any additional dependencies to the core ServiceStack.dll but you can use your own custom HashProvider by registering it in the IOC, e.g:
container.Register(c =>
new MyCustomHash()); -
Enable ServiceStack Services in UWP
Provide a package that allows hosting ServiceStack services (specifically web services and web sockets) in a UWP environment. The primary use-case for this is to allow ServiceStack services to run on an IoT device using UWP IoT Core.
13 votesNot possible to run ServiceStack Server in AOT environments. Only our Service Clients support UWP .NET Native AOT
http://docs.servicestack.net/releases/v5.2#support-for-uwp-net-native
-
1 vote
TypeScript’s async/await works on existing ES6 promises so no changes is necessary to use async/await on JsonServiceClient async APIs.
-
Plugins inside multitenant environment
Hi!
We are building an asp.net mvc app with servicestack api. We have a plugin system which allows us dynamically load/unload plugins (Plugin is a custom servicestack plugin) as long as it is not multitenant solution there is no problems, if we wanted another version of plugin we install it during runtime and restart appdomain works like a charm. Now the question is is there a way to do this on multitenant situations where plugins must be loaded/unloaded on each request. To unload them maybe it is not that big of a problem, but how to deal when we have…
1 vote -
Support EnumAsInt attribute in ServiceStack.Text JSON serializer
EnumAsInt was added as an alternative to Flags in OrmLite. This would be nice to have in Text too.
1 voteIt’s a feature that it lets you control OrmLite independently of the serializers, otherwise it’s just a duplicate/redundant version of [Flags] which you should use instead if you want it on both.
- Don't see your idea?