问题标签 [asp.net-core-webapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2614 浏览

asp.net-core - AuthenticationHandler 错误 AuthenticationScheme: Bearer 被禁止

我正在使用 ASP.NET Core 制作一项小型服务。我现在面临的第一件复杂的事情是将用户身份验证到我的系统中。

让我介绍一下我的身份验证流程:

+)客户端->调用 (api/account/authorize) ->系统检查客户端是否有效->将令牌发送回客户端,因为他/她是有效的

+)客户端->使用获得的令牌->向 api/account/filter 请求->服务验证令牌并返回信息

我已经阅读了一些关于 JWT 的教程,但响应中没有包含我需要的足够信息。我想要

  • 抛出 401并且一条消息描述了该状态代码,即:“ ACCOUNT_DISABLED ”、“ ACCOUNT_PENDING ”、“ ACCOUNT_PERMISSION_INSUFFICIENT ”……不仅仅是 401。

因此,我实现了自己的 Authenticate 验证器:

这是我的帐户控制器:

当我使用 api/account/authorize 生成的令牌访问 api/account/filter 时。向我抛出了一个错误:

AuthenticationScheme:承载被禁止

谁能告诉我为什么?我的实施是不是最好的方法?

谢谢,

0 投票
1 回答
2101 浏览

asp.net-web-api - ASP.NET Core Web API:捕获路由错误

我正在尝试在 ASP.NET Core Web API 项目中捕获路由错误。

具体来说,路由错误是指例如:在控制器中,我只有:

但一个要求是:

自动返回 404,但我希望能够在代码中处理它(即调用某种异常处理例程)。

我尝试了三种不同的方法,但均未成功:

在 ConfigureServices(IServiceCollection services) 中,我添加了:

这会捕获控制器内发生的错误(例如,如果我在上面的 Get(id) 方法中放置了 throw()),但不会捕获路由错误。我认为这是因为没有找到匹配的控制器方法,因此错误会向上传播到中间件管道。

为了尝试进一步处理管道中的错误,我尝试了...

我也试过:

发生路由错误时,似乎都没有调用上述任何一个。我采取了错误的方法吗?或者这些方法中的一种是否真的有效?

任何建议将不胜感激。

谢谢

克里斯

PS。我对 ASP.NET Web API 比较陌生,所以请原谅我可能使用了稍微错误的术语。

0 投票
1 回答
4835 浏览

asp.net-core-mvc - 在 IIS 上部署 .Net Core WebAPI 项目

我使用 .Net Core 创建了一个简单的 Web API,并尝试将其发布到 IIS。但是获得 HTTP 500。

我关注了https://docs.asp.net/en/latest/publishing/iis.html文章,并做了其中提到的任何事情。

我只安装了https://www.microsoft.com/net/download as

DotNetCore.1.0.1-WindowsHosting.exe OPT_INSTALL_REDIST=0

注意: 我能够成功部署和访问 MVC 应用程序,但无法使用相同的步骤访问 WebAPI 应用程序。

在 IIS 日志中,我看到以下错误。

无法使用命令行 '"dotnet" .\Project-1.dll' 启动进程,错误代码 = '0x80070002'。

我正在使用 Visual Studio 2015 中提供的默认 Web api 模板

我错过了什么吗?WebAPI 部署与 MVC 应用程序部署 wrt .net 核心不同吗?

0 投票
1 回答
868 浏览

c# - Process.Start在.net核心中给出文件未指定错误

我想在.net core 中打印。为此,我正在使用Process. System.Diagnostics我尝试了以下代码:

};

但是.net 核心Verb中缺少属性。StartInfo所以我决定按如下方式打印:

但它给了我

该系统找不到指定的文件

而文件存在于给定位置。

现在我正在尝试在我的 Windows 10 机器上使用本地打印机进行测试,但我需要的是从 ubuntu 机器打印到网络打印机。

有人可以告诉我,为什么我收到文件未找到错误。我找到了以下链接,但它使用的是 StartInfo,在这种情况下对我没有帮助。

Process.Start in C# The system cannot find the file specified error

Process.Start() 中的错误——系统找不到指定的文件

0 投票
3 回答
18599 浏览

c# - Asp.net Core Post parameter is always null

I'm sending POST from fiddler:

But Post method always gets null.

When I use [FormBody] product is always null, when not using it product is valued but with all fields being null. Product class is simple.

i tried adding NullValueHandling to ConfigureServices as proposed in post but no use.

0 投票
1 回答
196 浏览

azure - Azure .NET Core Web API 1.0.1 500 错误

我刚刚将我的 .NET Core MVC WebAPI 应用程序从 1.0.0 升级到了 1.0.1。在本地测试,它可以工作。部署到 Azure 时,我在尝试调用任何 RESTful 服务时收到 500 错误。我在 Azure 上打开了日志记录和任何可以打开的诊断功能。但是,我不断收到没有详细信息的通用 500 错误消息。不知道如何调试这个。请注意,.net core 1.0.0 在 Azure 上对我来说工作得很好。

0 投票
1 回答
1224 浏览

authentication - Bearer token WEB API asp.net core 无重定向

我是 asp.net 核心的新手。我正在尝试使用来自 Google、Facebook、...的 jwt 身份验证和 OpenOauth 制作一个小型 Web 服务。

我读过这篇文章: https ://stormpath.com/blog/token-authentication-asp-net-core

这篇文章是关于在 ASP.Net 核心中使用 jwt 进行身份验证的,但是,我还想验证用户在我的系统中是被禁用还是处于活动状态

我的数据库有一个包含 4 列的表:ID、名称、密码、状态(0 - 禁用 | 1 - 活动)。

我怎样才能实现我的目标?

任何人都可以帮助我吗?

P/S:我已经在 google 上搜索了关于 asp.net 中 jwt 的完整教程,但是很少。身份验证流程的完整源代码表示赞赏。

0 投票
3 回答
2964 浏览

javascript - 在 Web API Core 和 Angular JS 中启用 CORS

我有一个托管在不同本地主机中的 WEB API 核心,我试图通过 AngularJS $http 服务从我的 MVC 核心应用程序访问它。

这是我的 homeController.js

在 WEB API Core 的 Startup.cs 中启用跨源调用

尽管如此,我仍然在 chrome 中收到此错误。

我可以从 Postman 客户端调用 api。我错过了什么步骤?请帮忙。

我为此做的修复

在 WebAPI 项目web.config文件中

StartUp.cs

Chrome 不允许我在Access-Control-Allow-Origin字段中使用 *。

还添加"Microsoft.AspNetCore.Cors": "1.0.0"到 project.json

感谢大家的帮助。我真的很菜鸟。

0 投票
1 回答
3146 浏览

c# - ASP.NET Core 1 (RTM) 中的自定义 DateTime 模型绑定器

我正在编写 ASP.NET Core 1 应用程序,它有一个 Web API 控制器,供应商将在其中发布数据。

这是我将绑定传入数据的 Model 类的简化版本:

问题是日期将以德语格式发布,例如30.09.2016. 我不想将应用程序的全球文化设置为,de-DE因为 a) 我不是德国人,b) 应用程序的其余部分将使用 ISO 日期。

我已经准备好编写一个自定义IModelBinder,并且因为它在 ASP.NET Core MVC 中显然是强制性的,所以一个IModelBinderProvider.

这是我的实现IModelBinderProvider

问题是我IModelBinderProvider只在Lead课堂上被击中,即context.Metadata.ModelType == typeof(Lead).

我希望模型绑定器看到我们没有处理 a DateTime,继续前进,然后返回类的每个属性Lead
显然情况并非如此,我的习惯IModelBinder从未受到影响。

我之所以说这IModelBinderProvider似乎是强制性的,是因为我发现没有办法直接将 an 注册IModelBinder到 MVC 管道中。我必须注册一个 IModelBinderProvider 代替:

如何让 ASP.NET Core MVC 将我的自定义DateTime绑定器应用于类的Date属性Lead?有没有办法跳过整个IModelBinderProvider业务而只使用一个IModelBinder

0 投票
2 回答
2079 浏览

c# - Angular2 中的 Http PUT 到 .NET Core Web API 会在预检请求中提供 http 401 错误

我有一个 Angular2 应用程序,它对 .NET Core Web API 控制器执行 http PUT。当我运行该应用程序时,它首先发出一个 OPTIONS 预检请求并引发 401 Unauthorized 错误。

我试过直接从 Postman 做 PUT 并且效果很好。不知道这是否相关,但我来自 Angular 应用程序的 GET 也可以正常工作。我已经在文档和网络搜索的帮助下汇总了以下代码,但我还没有完全理解为什么 OPTIONS 飞行前请求是未经授权的?我尝试了一些方法,例如在 web.config 中删除和重新添加 OPTIONSVerbHandler。我还读到预检请求要求您不要发送凭据,但我不确定在我的情况下如何做到这一点。

我正在使用 Angular 2.0.0-rc.5 和 .NET Core 1.0.0,并在 IIS 8.5 上托管(在 Visual Studio 2015 中开发时的 IISExpress)。

foo.service.ts:

fooController.cs:

webAPI 应用程序的 web.config: