heldersepu / swagger-net Goto Github PK
View Code? Open in Web Editor NEWSeamlessly adds a swagger to WebApi projects!
License: BSD 3-Clause "New" or "Revised" License
Seamlessly adds a swagger to WebApi projects!
License: BSD 3-Clause "New" or "Revised" License
Hello,
I'm looking a way to use Bearer Authorization with Swagger-Net, but I didn't find way to do that,
It's possible help me, what is the best way to do that using swagger-net
Thanks.
Is it possible to configure Swagger-Net to perform OAuth2 authentication via the browser? In our case, we need to perform a GET request to initiate login, and our identity provider uses two factor authentication. That requires additional forms that the simple authorization built into swagger-ui does not appear to support, unless I am missing something...
Good day and thank you for this nice library.
I found an issue with AppendMethodName
method: I think it can't just increment the generic
number. This number designates zero-based index of a type's generic parameter. So, in case if I have a class:
class SomeGenericClass<TFirst, TSecond, TThird>
{
public void SomeMethod(TFirst foo, TThird bar)
{
}
}
Current AppendMethodName
implementation will create M:SomeGenericClass`3.SomeMethod(`0,`1)
XML method name for SomeMethod
while the right one is M:SomeGenericClass`3.SomeMethod(`0,`2)
because TThird
's position in declaring class typeparams is 2, not 1. So I think it should use lookups instead of simply incrementing the number.
Hello,
I need annotations to describe the parameters of the actions and the controller in class.
Like this:
[SwaggerDescription("Controller description")]
public class ExampleController : ApiController {
[SwaggerExample("id", "Parameter description")]
public IHttpActionResult ExampleAction(string id) {
}
}
I've been looking at the tests and I think it's not implemented.
Will it be available in the future?
Regards.
Could you please consider this feature?
https://github.com/mattfrear/Swashbuckle.Examples
By this one you are able to create compilable examples in the project
Thanks!
Hi, it'll be very useful to have ability to download Swagger API documentation as PDF
Area is param when ui show.How to support area?
I wrote some code to add to the SwaggerDocsHandler to save a copy of the swagger json to disk.
that way if the swagger is not in memory but is in the disk folder i could read that file and cache that to memory. this way between publishing an update the full generation could happen just one time.
i have the code using newtonsoft json to save and read the data but on read i get an error about the $ref elements.
so i saved a copy and then ran the web site and saved the doc from the web site url.
the web site url version is much shorter than the newtonsoft version.
do i need to use the code in the ContentFor() method to make it right ?
var content = new ObjectContent(typeof(SwaggerDocument), swaggerDoc.SwaggerDocument, result.Formatter, result.MediaType);
should i actually save this ObjectContent version of the data ???
or is there another method i should use to do this ?
some parameters must be transfered through headers, does swagger-Net support this requirement
When i use MultipleApiVersions,the API list is null. but the SingleApiVersion is working.
This is more of a feature request than an issue, because the software works extremely well (especially for my more advanced requirements such as adding Vendor Extensions and adding required Headers to the Swagger UI via Operation Filters) - nice work! I am looking for a way to export the Swagger document in YAML format. The JSON format is perfect for me, but unfortunately, I am tasked with providing the document in YAML format. I suppose I could write a JSON to YAML converter myself (for now), but figured I would reach out to see if this is something that could be put into a feature enhancement list.
I am hoping "document syntax" or "document markup" could be configurable via Swagger.config, or maybe provide an "Export" button on Swagger UI, allowing the consumer to choose "Export as JSON" or "Export as YAML". Specifically, I am tasked with exporting the document in the same way you can choose YAML on the Swagger website here: https://editor2.swagger.io .. For now, I am copying the JSON, going to that Swagger website editor, pasting the JSON and exporting/saving as a YAML document. I do have a workaround, but was thinking this would be an awesome feature for those of us tasked with providing the document in YAML format.
P.S. Truly an awesome tool; by far the best ASP.NET Web API NuGet package for Swagger UI.
Hi,
We've come across an issue using the Swagger-Net NuGet package in our site.
A NullReferenceException
is thrown from within the ExpandGenericArgsIfAny
method of XmlCommentsIdHelper
.
After investigation I've managed to pinpoint the issue and recreate it using your Swagger.Net.Tests project. Please see my commit 8c491c36. With the modified Controller, 21 of your existing tests fail with:
System.NullReferenceException : Object reference not set to an instance of an object.
at Swagger.Net.XmlComments.XmlCommentsIdHelper.ExpandGenericArgsIfAny(Type type, StringBuilder builder, IDictionary`2 genericParametersPositions) in <repo_dir>\Swagger-Net\Swagger.Net\Swagger\XmlComments\XmlCommentsIdHelper.cs:line 96
The issue lies with a nested class using generic types from the class it's nested into.
The tests go green if I put a null check on line 89, changing:
if (type.IsGenericType)
to:
if (type.IsGenericType && genericParametersPositions != null)
Though I'm unsure if this is the correct solution.
Any help on this issue is appreciated.
Previously I was using swagger + swashbuckle without issue, and simply registered the single redirect url and we were good.
Upon updating to Swagger-Net (based on latest swagger-ui) however, the URLs no longer use a #hash-format
but instead a ?query-parameter
to select which API version you're looking at.
This is affecting the redirect_url for oauth2 clients, meaning I now need to register a client for every api version.
This is further complicated by the fact that our selected identity provider enforces a unique client_id, meaning we can't register multiple redirect_urls for the same client_id, so the end-user is forced to update the client_id when changing end points too.
Previous redirects all went via o2c.html
, now occasionally they go via oauth2-redirect-html?urls.primaryName=swagger%2Fdocs%2FAPI
Interestingly, if I auth on the initial page, THEN swap to the selected api version, the auth is remembered. I can then log out, then log in successfully.
However if I browse to the api version first, then attempt to log in, the altered redirect url is used.
Hello,
Small suggestion: on the custom asset, it is possible to add a custom requestInterceptor in the SwaggerUIBundle object, which I believe is intended.
I suggest adding some information on the documentation about this, especially about the fact that the request parameter passed to the function HAS to be returned.
If you don't return the request object, the request seems to still be properly executed but the CURL box is broken.
i do not see a way in the current code to configure the swagger to put in values for the info object.
if that is true and i have not missed something then perhaps we can add that to the enable swagger / options later...
Support asp.net core?
Swagger-Net" version="8.3.9.301"
nginx config
server {
listen 8001;
server_name api.jhtmsf.com;
location / {
proxy_pass http://127.0.0.1:8007;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 2000m;
root html;
index index.html index.htm;
}
}
Thank you very much for your selfless dedication.
Can you solve this problem through configuration?
enum
public enum Filter {first, second, third};
controller snippet
[Route("test")]
public HttpResponseMessage Get(Filter filter = Filter.first)
snippet of generated swagger.json:
"parameters": [
{
"default": 0,
"enum": [
"first",
"second",
"third"
],
"in": "query",
"name": "filter",
"required": false,
"type": "string"
}]
Expected Result:
"default":"first"
Actual Result:
"default":0
CustomAsset from https://github.com/heldersepu/Swagger-Net/blob/master/Swagger.Net/SwaggerUi/CustomAssets/index.html
isn't worked.
After copy it get error:
Uncaught ReferenceError: swaggerNetConfig is not defined
at index:83
In TypeExtensions.cs, you're denoting generic classes using square brackets.
Once you try and parse the generated definitions in editor.swagger.io, these will force an error:
Semantic error at paths./awards/v0/public/awardtiers.get.responses.200.schema.$ref
$ref values must be RFC3986-compliant percent-encoded URIs
This is because RFC3986 reserves square brackets for denoting ip addresses.
A host identified by an Internet Protocol literal address, version 6
[RFC3513] or later, is distinguished by enclosing the IP literal
within square brackets ("[" and "]"). This is the only place where
square bracket characters are allowed in the URI syntax. In
anticipation of future, as-yet-undefined IP literal address formats,
an implementation may use an optional version flag to indicate such a
format explicitly rather than rely on heuristic determination.
I'm happy to open a PR for this, but wanted some input on what you thought a suitable replacement might be.
The reserved characters from RFC3986 are:
gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
With that in mind, we can't use square brackets, or commas, so I was hoping to open discussion about viable alternatives
Generic<Type1,Type2>
Generic[Type1,Type2]
Hello,
I thinks have found a bug in parameter generation.
I recently use MultipleApiVersions instead SingleApiVersion.
We use header param for ApiVersionning (because we don't want change URL at each version) but that not work in Swagger (but a simple REST call works fine!)
Swagger thinks my param is a query param but not, it's an header param.
You can see my hotfix here : ecoburotic@d148de1
I can't make a pull requests because I have other commits.
My server code (for information, if that can help you to reproduice)
In WebApiConfig.cs
// Configuration et services API Web
config.AddApiVersioning(o =>
{
o.ReportApiVersions = true;
o.AssumeDefaultVersionWhenUnspecified = false;
o.ApiVersionReader = new HeaderApiVersionReader("api-version");
o.ApiVersionSelector = new CurrentImplementationApiVersionSelector(o);
});
var apiExplorer = config.AddVersionedApiExplorer(options =>
{
options.GroupNameFormat = "V.V";
options.DefaultApiVersionParameterDescription = "Version de l'API";
});
In SwaggerConfig.cs
c.MultipleApiVersions(
(apiDesc, targetApiVersion) =>
{
targetApiVersion = targetApiVersion[0] + "." + targetApiVersion[1];
List<string> apiVersions = apiDesc.ActionDescriptor.GetApiVersions().Select(apiVersion => apiVersion.ToString()).ToList();
return apiVersions.Contains(targetApiVersion);
},
(vc) =>
{
var t = GlobalConfiguration.Configuration.Services.GetApiExplorer();
var t2 = t.ApiDescriptions;
foreach (ApiDescriptionGroup item in ((VersionedApiExplorer)t).ApiDescriptions)
{
vc.Version(item.ApiVersion.ToString().Replace(".", string.Empty), "EcoServiceREST API v" + item.ApiVersion.ToString());
}
});
In our API, we use OAuth2 authentication with a package called SecureAuth. When I use Authorize to get a token, the CORS preflight is failing. The error in the Chrome console shows:
Access to fetch at 'https://xxxx.org/secureauth12?response_type=id_token&redirect_uri=http%3A%2F%2Flocalhost%3A4143%2Fcontent%2Foauth.html&scope=openid%20email%20profile&client_id=zzzzzzz' from origin 'http://localhost:4143' has been blocked by CORS policy: Request header field x-requested-with is not allowed by Access-Control-Allow-Headers in preflight response.
I suspect this is because the JavaScript is trying to send X-RequestWith: XMLHttpRequest header. Is there any way to disable this, short of building a custom version of Swagger-Net? One of our other teams is using Swashbuckle, but that has not been active for some time.
Hi,
I have a selfhosted WebAPI project, and App_Start/SwaggerConfig dosn't work there.
I would prefer a "core" package without this helper.
I found no info on this on SO
I am going to take a look at what is needed to use the
https://github.com/rbeauchamp/Swashbuckle.OData/tree/master/Swashbuckle.OData
code as your project is based on the same stuff...
unless i can get OData to work i can't use this package.
Hello,
I was wondering if there's a way to hide an obsolete enum value from being listed in dropdown. I'm aware that this feature is present for actions and properties by just marking them as [Obsolete] and using IgnoreObsoleteActions() and IgnoreObsoleteProperties() but I was wondering if its possible within the granularity of values within enums..?
Hi,
I try to migrate my "specific code" to your "included code" but I can't use it for list parameter.
You can see my code at
https://github.com/ecoburotic/Swagger-Net/blob/master/Swagger.Net/Swagger/Annotations/ApplySwaggerHeaderParamAttribute.cs
If you can manage name override that can be great ๐
Swagger-Doc extract
{ "name": "idsBusiness", "in": "header", "required": true, "items": { "type": "integer", "format": "int32" }, "type": "array" }
Hello, I'm using fluent API and Model fields are not marked as required
Hello,
First, I would like to thank you for this amazing library. It is really cool and works great. However, I think I found a bug, when setting up the basic auth on the SwaggerConfig file a button appears on the UI which is correct, however even if we set the username and password correctly I always get Un-Authorized. By debugging in the Firebug console it never sends the Auth basic credentials set on the fields.
Am I missing something on the setup or is this a bug?
Thanks in advance,
Victor
CS0618
Look into a replacement for CamelCaseText
We have some calls that return response codes within the content (in addition to the HTTP response code). I would like to generate some content to output (preferebly in C# via reflection) and have it output in the response section for the call. Is this possible without just hacking the DOM?
Aftet I have configed SwaggerConfig.cs as follow, the order of the controller become disordered:
c.IncludeXmlComments(GetXmlCommentsPath("Api.xml"));
by the way, the comments of "Api.xml" is chinese
Hi,
Is there anyway to display nullable data type on definitions?
Thanks.
The screen.css file with the line "/* Original style from softwaremaniacs.org (c) Ivan Sagalaev [email protected] */" apparently may not be BSD compliant...
Is this based off of default.css within "https://github.com/isagalaev/highlight.js" ? I could be wrong, but are you sure Swagger-net is compliant according to the license here?
https://github.com/isagalaev/highlight.js/blob/master/LICENSE
I was wondering if there's a way to collapse/hide/disable the "models" being displayed by the generated swagger but still have the rest of the APIs expanded. DocExpansion.List seems to expand the models as well causing terrible lags in the UI. Of course, one solution is to just use DocExpansion.None and have everything collapsed initially but I was wondering if the above is still possible..?
This line is causing versions to be defined in uppercase.
#54 I created a pull request as well.
Hello,
Swagger-UI 3.5.0 supports the new config showExtensions. It allows one to display vendor extensions on the UI. It would be nice to have Swagger-Net support it.
Not sure if you accept MRs, but if you don't have time I could try to work on it.
Thanks!
Hi
This packages works quite fine out of the box, but - maybe i've missed a configuration - it seems to not be able to see Controller's public methods flagged with the async C# keyword.
"async" services work well.
A reflection problem or something to do in configuration ?
thx :)
i created a filter to set the response type to pdf
the ui shows the response type but i still get a text box that is labeled
"Unrecognized response type; displaying content as text."
the headers show that it is a pdf
content-disposition: inline; filename=Label4x6_v3development11872371541680226306.pdf
content-type: application/pdf
any idea if there is a way to get it to open acrobat or show the pdf ?
or is that not possible to do ?
Ok i know there are multiple answers to this and that is part of why i am posting this.
with swashbuckle and with nswag and with swagger-net each package is generating the json and bundling the UI but each user has to then figure out how to make sure that only the right users can browse the UI and see the JSON.
seems like this should be part of the standard packages as the packages are setting up a route that the user had limited control over.
so possibly adding some configure options might be a good move to make this better ?
also related i see that Open API V3 changes the Swagger json spec to better work with OpenID Connect.
I use Identity server and Open ID Connect so a move to better work with that would be a real plus for me.
I have been running into an issue where examples aren't serialized properly - they are generating with PascalCase property names instead of being correctly serialized to CamelCase:
"example": {
"EmployeeExpenses": {
"12345": [
{
"EmployeeExpenseCategoryId": "98",
"EmployeeExpenseCategoryName": "My expense category",
"Notes": "Some notes",
"Amount": 12.34,
"TaxCode": "42rty",
"TaxRate": 0.5,
"TaxCodeDisplayName": "Tax Code Display",
"LocationId": "39",
"LocationName": "My Location",
"EmployeeId": "1235",
"EmployeeName": "Bob Bobberson"
}
]
},
"PayRunId": 999
},
It seems that in Swashbuckle, these issues were marked as won't-fix.
Is it possible that we could resolve these issues in this library instead?
Nuget package reference to newtonsoft.json v11, but after installing Swagger-Net and running it we got an error:
An error has occurred. Could not load file or assembly 'Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) System.IO.FileLoadException at Swagger.Net.Application.SwaggerDocsConfig.GetSwaggerProvider(HttpRequestMessage swaggerRequest) at Swagger.Net.Application.SwaggerDocsHandler.Generate(HttpRequestMessage request, String apiVersion) at System.Collections.Concurrent.ConcurrentDictionary`2.AddOrUpdate(TKey key, Func`2 addValueFactory, Func`3 updateValueFactory) at Swagger.Net.Application.SwaggerDocsHandler.GetContent(HttpRequestMessage request) at Swagger.Net.Application.SwaggerDocsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) at System.Web.Http.Cors.CorsMessageHandler.d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
Need to update nuget package reference.
Hello,
I am trying to change the behavior of index html file so that the interceptor would add our custom api version header in the request when using "try it out".
I discovered that the onComplete method (here taken from the repository)
onComplete: function (swaggerApi, swaggerUi) {
window.swaggerApi = swaggerApi;
swaggerNetConfig.customScripts.forEach(function (script) {
getScript(script);
});
}
has swaggerApi and swaggerUi parameters but they are always undefined.
I could work around the issue but those parameters should either be removed from the code or should be populated properly.
It used to be enough to remove a path from the SwaggerDocument paths list to hide a controller from the swagger UI in swashbuckle using a documentfilter. That doesn't seem to work here. An empty list item with the controller name remains on the Swagger UI. Is that the expected behavior? Does it have to be removed from the definitions list as well now?
var paths = new Dictionary<string, PathItem>(swaggerDoc.paths);
swaggerDoc.paths.Clear();
foreach (var api in apiExplorer.ApiDescriptions)
{
var route = "/" + api.Route.RouteTemplate.TrimEnd('/');
if(ViewableAPIs.Any(x => route.Contains(x)))
{
var path = paths.TryGetValue(route, out PathItem pathItem);
if (pathItem != null)
swaggerDoc.paths.Add(new KeyValuePair<string, PathItem>(route, pathItem));
}
}
Currently c.DescribeAllEnumsAsStrings can either show that we take strings on a wire or numbers (and then we see choices in description)
In our case we do use numbers when data transmitted/received but we would like to show string representations of those enums for documentation purpose. So, if we have enum like this:
enum Status : byte {
Active = 1,
Inactive = 0
}
We like documentation to show "0" but model show something like "0-Inactive, 1-Active", not just number 0,1
Hi. I got this model
public class SomeRequest
{
[DefaultValue(null)]
public Loc Location { get; set; }
}
public class Loc
{
[DefaultValue(0f)]
public float Longitude { get; [UsedImplicitly] set; }
[DefaultValue(0f)]
public float Latitude { get; [UsedImplicitly] set; }
}
I want the location to be optional in swagger. and yet i can't seems to manage that. the json result is:
parameters: [
{
name: "Location.Longitude",
in: "query",
required: true,
type: "number",
format: "float"
},
{
name: "Location.Latitude",
in: "query",
required: true,
type: "number",
format: "float"
}
],
Any idea how to manage that? thanks
Web API methods that return typed Lists show something strange as the model, for example...
/// <summary>
/// Get all filters
/// </summary>
/// <returns></returns>
[HttpGet]
[Route("api/filter")]
public List<FilterSummary> GetFilters()
{
...
}
renders as:
[
xml: OrderedMap { "name": "FilterSummary", "wrapped": true }
LI.Models.WebApi.FilterSummary{...}]
Short introduction: I have 4 versions of 7 controller with ~30 methods. SwaggerUI (If you have luck, the site is currently corrupted like I describe)
The site is running all day and at any point and randomly the versions are mixed up.
FYI: happening nearly every ~2-4 months.
Example: I'm on the V4 of the Api, and see on some controllers just V1 methods.
Meanwhile after lots of research we cannot figure out, at which point this is happening.
Its neither after an update or some other maintaince.
We currently have Swagger-Net 8.3.18.1.
We figured out that after an iisreset, the problem disappears for a while.
But this minor solution is really difficult for us, because we cannot iisreset at any time we want.
Furthermore, the OpenApi file is also corrupted at this time.
But the endpoints which are not shown in SwaggerUI, are available at any time, from any REST Client.
Nice to know, this is happening at 5 complete different servers all the time. (not on the same time)
If I upgrade
Microsoft.AspNet.WebApi.Client
Microsoft.AspNet.WebApi.Core
to the latest version of my project referencing Swagger-Net, I will get error when starting up the application because System.Net.Http.Formatting and Newtonsoft.Json version are hard coded into the app.config file.
The packages.config says it'll support 5.2.4 and above. Which is not correct.
To replicate:
Create a new web api project, add swagger-net
Upgrade to the latest version of
Microsoft.AspNet.WebApi.Client
Microsoft.AspNet.WebApi.Core
Newtonsoft.Json
Start up the web api project and it'll fail, because the current version of the dll's are newer than the ones that are referenced in the app.config of Swagger-Net.
Solution: remove the app.config file from the project.
Or under application in the project settings: turn off "Auto-generate binding redirects"
I have found out Swagger-Net is not compatible with System.ValueTuple 4.4.0 package. When I update from version 4.3.0 to 4.4.0 of this package, Swagger fails to load API definition. I am using the latest stable 8.3.13.2.
Following is the error message listing from the spec endpoint:
{
"Message": "An error has occurred.",
"ExceptionMessage": "The 'p' start tag on line 1241 position 2 does not match the end tag of 'th'. Line 1241, position 92.",
"ExceptionType": "System.Xml.XmlException",
"StackTrace": "
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
at System.Xml.XmlTextReaderImpl.ThrowTagMismatch(NodeData startTag)
at System.Xml.XmlTextReaderImpl.ParseEndElement()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XPath.XPathDocument.LoadFromReader(XmlReader reader, XmlSpace space)
at System.Xml.XPath.XPathDocument..ctor(String uri, XmlSpace space)
at Swagger.Net.Application.SwaggerDocsConfig.<>c__DisplayClass58_0.b__0()
at Swagger.Net.Application.SwaggerDocsConfig.GetSwaggerProvider(HttpRequestMessage swaggerRequest)
at Swagger.Net.Application.SwaggerDocsHandler.Generate(HttpRequestMessage request, String apiVersion)
at Swagger.Net.Application.SwaggerDocsHandler.<>c__DisplayClass5_0.b__0(String _)
at System.Collections.Concurrent.ConcurrentDictionary`2.AddOrUpdate(TKey key, Func`2 addValueFactory, Func`3 updateValueFactory)
at Swagger.Net.Application.SwaggerDocsHandler.GetContent(HttpRequestMessage request)
at Swagger.Net.Application.SwaggerDocsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at Catalyst.WebApi.Infrastructure.LanguageMessageHandler.<>n__0(HttpRequestMessage request, CancellationToken cancellationToken)
at Catalyst.WebApi.Infrastructure.LanguageMessageHandler.d__6.MoveNext() in C:\\Dev\\CatalystServer\\Catalyst.WebApi\\Infrastructure\\LanguageMessageHandler.cs:line 70
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.HttpServer.d__24.MoveNext()
"
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.