问题标签 [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.
c# - 如何使用实体框架 6 和 .net-core-webapi 添加数据模型
我添加了 EFF6 和 .Net 4.6 作为依赖项,我可以看到引用,所以 nuget 包已经很好地添加、构建和运行,现在没有选项可以在模板窗格中添加 ADO.NET 实体数据模型?单击此处上网,发现模板也无济于事。
已应用 VS2015 更新 3。
任何人的想法?
c# - IActionResult 类型返回结果时如何在 Xunit 中获取内容值
我有一个使用 Xunit 的单元测试项目,我们正在测试的方法返回IActionResult
。
我看到有人建议使用“NegotiatedContentResult”来获取内容,IActionResult
但这在 Xunit 中不起作用。
所以我想知道如何获取IActionResult
Xunit中的内容值?
测试代码示例如下:
有谁知道如何在 XUnit 中做到这一点?
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 进行身份验证。
asp.net - Asp.net core:调用 web api 返回 500
我是 asp.net 核心应用程序的新手。
我有一个使用存储库模式的 asp.net 核心应用程序。它有一个名为ApplicationsAPIController的 api 控制器。
ApplicationsAPIController有一个返回所有应用程序的GetApplications方法。
我已将应用程序发布到远程服务器。从邮递员调用 GetApplications api 时抛出500 Internal Server Error并带有以下 HTML 作为响应:
注意:以上 api 在开发环境(本地)中完美运行。
根据错误,我想我必须设置一个登台或生产环境。但我找不到任何好的和一步一步的文件来设置。我已经尝试了很多方法,但都失败了。
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 调用以进行身份验证?或者,如果这不是正确的方法,我应该如何实现这一目标?我应该添加一些中间件吗?
asp.net-core-mvc - 算术运算导致溢出(更新asp核心数据库)
我刚搬到asp核心。我想在 asp 核心中使用 ef 创建一个数据库。我添加了一个名为 Person 的 smaple 类并在 DbContext 中使用它,然后dotnet ef
在项目根目录的命令行中添加,然后向项目添加迁移,但是当我尝试在命令行中更新数据库时,我遇到了这个错误其中说:
算术运算导致溢出
这是我的代码:这是我的项目 json:
}
appsetting.json:
}
数据库上下文:
启动类
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() 扩展。
所以我创建了一个这样的扩展方法
然后,当我创建映射时,我会这样:
这允许我在映射时像这样使用它:
解析器负责映射。
microservices - 如何在微服务架构中包含 CorrelationId?
我正在使用 ASP.NET Core Web api 创建一个微服务架构。所有的服务都是相互解耦的,可以部署在不同的环境中。每个服务都有自己的日志记录。当请求流经这些服务时,它可能在任何服务中失败,我们需要一种将一系列事件追溯到源的方法,即使这意味着遍历多个服务。
因此,为了处理这个问题,发起请求的服务会创建一个 CorrelationId 并将其传递给下一个服务。第二服务将其传递给第三服务,依此类推。如果发生异常,相应的服务将记录异常消息以及 CorrelationId。
我想知道服务调用者传递correlationid的最佳位置是什么?
调用者应该在 HttpHeader 中传递相关 ID 还是应该将其作为部分方法参数传递,如下所示
这是被调用的服务
在上述方法中,如果在调用此方法之前存在异常,则 CorrelationId 将无法用于全局异常处理程序进行日志记录。
有什么建议么?或替代方法
c# - ASP.NET CORE、Web API:没有路由与提供的值匹配
请注意:这个问题是在 2016 年提出的。这个问题的原始答案是更新 microsoft api versiong 包。目前,该问题再次出现,但出于其他原因。
原始问题:
我在asp.net core(web api)中的路由有一些问题。
我有这个控制器(简化):
如果我调用 Create,则会创建文档并创建路由对象,但我收到错误“没有路由与提供的值匹配”并获得 500 状态。
我可以直接调用 GetByGuid,没有任何问题。
我找不到任何关于 asp.net 核心的调试帮助(就像任何现有的路由调试器一样)。
我将不胜感激任何帮助!
编辑 看起来这将是微软版本控制包中的一个错误..如果我定义修复路由 /api/v1/[Controller] 它正在工作。
但这对我来说不是解决方案。
asp.net-core - 如何在控制器中注入 HttpHeader 值?
我有使用 ASP.NET Core API 开发的 Web API。每个传入的请求都插入了一个自定义标头值。例如x-correlationid
。控制器使用此值记录和跟踪请求。目前我正在读取每个控制器中的值,如下所示
我认为这违反了 DI 规则。
我不想读取控制器构造函数中的值,而是将值注入控制器的构造函数中。
或者
中间件可以读取x-correlationid
并*somehow*
使其可用于所有控制器,这样我们就不必将它注入任何控制器?
这里有什么更好的选择?