问题标签 [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 回答
292 浏览

c# - 如何使用实体框架 6 和 .net-core-webapi 添加数据模型

我添加了 EFF6 和 .Net 4.6 作为依赖项,我可以看到引用,所以 nuget 包已经很好地添加、构建​​和运行,现在没有选项可以在模板窗格中添加 ADO.NET 实体数据模型?单击此处上网,发现模板也无济于事。

已应用 VS2015 更新 3。

任何人的想法?

0 投票
1 回答
28043 浏览

c# - IActionResult 类型返回结果时如何在 Xunit 中获取内容值

我有一个使用 Xunit 的单元测试项目,我们正在测试的方法返回IActionResult

我看到有人建议使用“NegotiatedContentResult”来获取内容,IActionResult但这在 Xunit 中不起作用。

所以我想知道如何获取IActionResultXunit中的内容值?

测试代码示例如下:

有谁知道如何在 XUnit 中做到这一点?

0 投票
1 回答
747 浏览

authentication - 如何在 ASP.NET Web API Core 中实现身份验证和授权?

我们正在构建 ASP.NET MVC 核心 Web 应用程序并通过 ASP.NET Core Web API 访问数据。

我们必须对 MVC Core 和 Web API Core 端进行身份验证和授权。

如果用户在 MVC 核心 Web 应用程序中进行了身份验证,则在访问 Web API 核心上的数据时,不应再次进行身份验证。如果用户直接访问 Web API,那么它不应该允许并要求进行身份验证。

我们还想通过 Google 进行身份验证。

0 投票
2 回答
4616 浏览

asp.net - Asp.net core:调用 web api 返回 500

我是 asp.net 核心应用程序的新手。

我有一个使用存储库模式的 asp.net 核心应用程序。它有一个名为ApplicationsAPIController的 api 控制器。

ApplicationsAPIController有一个返回所有应用程序的GetApplications方法。

我已将应用程序发布到远程服务器。从邮递员调用 GetApplications api 时抛出500 Internal Server Error并带有以下 HTML 作为响应:

注意:以上 api 在开发环境(本地)中完美运行。

根据错误,我想我必须设置一个登台或生产环境。但我找不到任何好的和一步一步的文件来设置。我已经尝试了很多方法,但都失败了。

0 投票
2 回答
1421 浏览

angular - Angular 2 AspNetCore WebApi CORS 问题:预检响应具有无效的 HTTP 状态代码 401

我正在尝试针对我在 Visual Studio 2015 中实现的 AspNetCore WebApi 项目在 Angular 2 RC6 应用程序中实现基于简单令牌的身份验证。

我已将示例应用程序放在 github 上:https ://github.com/tonywr71/Snazzle ,这是一个功能齐全的应用程序。

在应用程序中,我单击登录菜单项,输入登录名和密码信息,然后单击登录。

它成功返回了身份验证令牌,我将其存储在隔离存储中。

然后我单击 Fetch Data 菜单项,它调用一个具有 Authorize 属性的示例控制器。它传递令牌,该令牌从隔离存储中检索并添加到标头中。但它失败并出现错误。

我得到的错误是“XMLHttpRequest 无法加载http://localhost:5100/api/SampleData/WeatherForecasts。预检响应具有无效的 HTTP 状态代码 401”

WeatherForecasts 是一个 WebApi 方法,它返回一些 Angular 2 客户端组件使用的 json。

401 是未经授权的,它获得未经授权的原因是由于预检 ORIGIN 调用,因为没有为 ORIGIN 调用发送标头。

当我使用 Postman 运行它时,添加令牌后就没有问题了 - 方法调用有效。那是因为 Postman 不需要担心 CORS。

所以我的问题是,我怎样才能让 AspNetCore 不检查 ORIGIN 调用以进行身份​​验证?或者,如果这不是正确的方法,我应该如何实现这一目标?我应该添加一些中间件吗?

0 投票
0 回答
506 浏览

asp.net-core-mvc - 算术运算导致溢出(更新asp核心数据库)

我刚搬到asp核心。我想在 asp 核心中使用 ef 创建一个数据库。我添加了一个名为 Person 的 smaple 类并在 DbContext 中使用它,然后dotnet ef在项目根目录的命令行中添加,然后向项目添加迁移,但是当我尝试在命令行中更新数据库时,我遇到了这个错误其中说:

算术运算导致溢出

这是我的代码:这是我的项目 json:

}

appsetting.json:

}

数据库上下文:

启动类

0 投票
3 回答
27033 浏览

c# - 带有 EF Core 的 ASP.NET Core - DTO 集合映射

我正在尝试使用(POST/PUT)一个 DTO 对象,其中包含从 JavaScript 到 ASP.NET Core(Web API)的子对象集合,并将 EF Core 上下文作为我的数据源。

主要的 DTO 类是这样的(当然是简化的):

我真的不知道如何以一种不包含大量代码的方式将其映射到 Customer 实体类,只是为了找出哪些 Persons 已被添加/更新/删除等。

我已经使用 AutoMapper 进行了一些操作,但在这种情况下(复杂的对象结构)和集合,它似乎并不能很好地与 EF Core 一起使用。

在谷歌搜索了一些关于这个的建议之后,我没有找到任何关于什么是好的方法的好的资源。我的问题基本上是:我是否应该重新设计 JS 客户端以不使用“复杂”DTO,或者这是“应该”由我的 DTO 和实体模型之间的映射层处理的东西,还是有其他我没有的好的解决方案意识到?

我已经能够使用 AutoMapper 和手动映射对象之间的映射来解决它,但是没有一个解决方案感觉正确,并且很快就变得非常复杂,并且有很多样板代码。

编辑:

以下文章描述了我所指的有关 AutoMapper 和 EF Core 的内容。它的代码并不复杂,但我只想知道它是否是管理它的“最佳”方式。

(文章中的代码经过编辑以适合上面的代码示例)

http://cpratt.co/using-automapper-mapping-instances/

上面的代码编写为通用扩展方法。

......

编辑:

我真正想要的一件事是在一个地方(配置文件)中删除 AutoMapper 配置,而不必每次使用映射器(或任何其他需要使映射代码复杂化的解决方案)时都使用 MapCollection() 扩展。

所以我创建了一个这样的扩展方法

然后,当我创建映射时,我会这样:

这允许我在映射时像这样使用它:

解析器负责映射。

0 投票
1 回答
1952 浏览

microservices - 如何在微服务架构中包含 CorrelationId?

我正在使用 ASP.NET Core Web api 创建一个微服务架构。所有的服务都是相互解耦的,可以部署在不同的环境中。每个服务都有自己的日志记录。当请求流经这些服务时,它可能在任何服务中失败,我们需要一种将一系列事件追溯到源的方法,即使这意味着遍历多个服务。
因此,为了处理这个问题,发起请求的服务会创建一个 CorrelationId 并将其传递给下一个服务。第二服务将其传递给第三服务,依此类推。如果发生异常,相应的服务将记录异常消息以及 CorrelationId。

我想知道服务调用者传递correlationid的最佳位置是什么?

调用者应该在 HttpHeader 中传递相关 ID 还是应该将其作为部分方法参数传递,如下所示

这是被调用的服务

在上述方法中,如果在调用此方法之前存在异常,则 CorrelationId 将无法用于全局异常处理程序进行日志记录。

有什么建议么?或替代方法

0 投票
13 回答
43515 浏览

c# - ASP.NET CORE、Web API:没有路由与提供的值匹配

请注意:这个问题是在 2016 年提出的。这个问题的原始答案是更新 microsoft api versiong 包。目前,该问题再次出现,但出于其他原因。

原始问题:


我在asp.net core(web api)中的路由有一些问题。

我有这个控制器(简化):

如果我调用 Create,则会创建文档并创建路由对象,但我收到错误“没有路由与提供的值匹配”并获得 500 状态。

我可以直接调用 GetByGuid,没有任何问题。

我找不到任何关于 asp.net 核心的调试帮助(就像任何现有的路由调试器一样)。

我将不胜感激任何帮助!

编辑 看起来这将是微软版本控制包中的一个错误..如果我定义修复路由 /api/v1/[Controller] 它正在工作。

但这对我来说不是解决方案。

0 投票
3 回答
5230 浏览

asp.net-core - 如何在控制器中注入 HttpHeader 值?

我有使用 ASP.NET Core API 开发的 Web API。每个传入的请求都插入了一个自定义标头值。例如x-correlationid。控制器使用此值记录和跟踪请求。目前我正在读取每个控制器中的值,如下所示

我认为这违反了 DI 规则。

我不想读取控制器构造函数中的值,而是将值注入控制器的构造函数中。
或者
中间件可以读取x-correlationid*somehow*使其可用于所有控制器,这样我们就不必将它注入任何控制器?

这里有什么更好的选择?