问题标签 [asp.net-core-3.1]
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# - 不能使用服务容器中的服务和默认值来实例化“MyProject.Response”类型的构造函数
我正在使用 asp.net core 3.1 项目模板来开发 Web API。没有编译错误。
这是我的代码详细信息:
程序.cs
启动.cs
响应.cs
Startup.cs 中提到的所有依赖ConfigureServices
项都可用。在验证 API 时,我收到如下所述的运行时错误:
不能使用服务容器中的服务和默认值来实例化“MyProject.Response”类型的构造函数。
下面是 Response 类所需的依赖项设置,如下所述:
ProjectServiceCollectionExtensions.cs
解析器.cs
CountryResolver.cs
任何人都可以通过提供他们的指导来帮助我解决这个问题
json - 在 .Net Core 3.1 中,如何从字典中生成 JsonElement 而无需序列化和反序列化?
我正在从 DocuSign 添加一些身份验证并更新代码以使用 .Net Core 3.1。
原始代码有:
其中 user 是来自 newtonsoft 的 JObject。在 .net core 3.1 中更新是 RunClaimActions 采用 JsonElement。
在查看并尝试使用一些可用的更新对象后,它们似乎是不可变的。在不知道响应内容的所有内容的情况下,将其转换为字典并添加原始代码中的项目似乎是合乎逻辑的。(注意代码尚未测试)
但是似乎没有直接的方法可以从中生成 JsonElement ,所以到目前为止我能想到的最好的方法是:
有什么我完全想念的东西可以让这更容易吗?
原始源代码在 github 上。
c# - .Net core 2.2 到 3.x 迁移:Url.Action 生成错误的 URL,端点路由已停用
我正在将 webapp 从 .Net core 2.2 迁移到 3.1。其中,我们在控制器和视图中广泛使用了属性路由和 Url.Action(我们不使用任何 asp 标签)。因为我们需要进行很多更改才能使用端点路由,所以我使用EnableEndpointRouting = false
.
问题是:Url.Action 生成错误的 url,最终出现 404!它在生成 url 时完全忽略了属性路由,我不明白为什么。
如果有人可以帮助我了解我做错了什么以及如何正确看待这件事,将不胜感激。
启动.cs:
然后我有以下带有属性路由的控制器:
要访问这个,它需要通过~/maker/cards
,很容易。
然后在一些cshtml页面中,使用以下链接到上一个动作:
问题都生成以下 url ~/creditcards/indexasync
,这不是路由中的配置!在 2.2 中,相同的 Url.Action 生成预期的 url /maker/cards
。
使用EnableEndpointRouting = false
,我希望 UrlHelper 使用属性路由来生成链接,但事实并非如此。我在这里想念什么?
有趣的事实:如果我使用Url.RouteUrl
并将路由名称添加到控制器,它会正确生成它!
编辑:花了一天多的时间在这里发布后仅一个小时后,我发现了问题。在 3.0 中,他们引入了一个忽略动作名称的新功能Async
,这会强制您在生成链接时使用不带异步的名称。
https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-2.2&tabs=visual-studio#async-suffix-removal-from-controller-action-names
所以有2个解决方案:
- 我可以转换
@Url.Action("IndexAsync", "CreditCards")
为@Url.Action("Index", "CreditCards")
并且它可以工作,但我必须在应用程序的任何地方更新它。(有趣的是,使用这种格式,Visual Studio 无法识别端点并将其标记为未知) - 或者,可以通过在 ConfigureService 中添加以下选项来明智地停用此选项应用程序
options.SuppressAsyncSuffixInActionNames = false;
。这就是我最终做的事情。
现在的工作解决方案如下:Startup.cs
我现在的行为与升级到 3.1 之前的行为相同。
c# - 等效于 .Net Core 中的 HttpResponse.StatusDescription 设置状态码描述
如何更改 .Net Core 应用程序的状态描述。我正在寻找与 .Net 4.8 HttpResponse.StatusDescription等效的东西。
代替
HTTP/1.1 400 Bad Request
我想将 Bad Request 更改为我的应用程序中的某些内容
HTTP/1.1 400 Custom Error Message
我知道还有其他发送错误文本的方法,但是我需要支持仅从状态代码文本字段中读取错误消息的遗留应用程序。
如果相关,这将使用 .net core 3.1 在 IIS 上运行
c# - 未找到自定义 C# 属性的命名空间
我们有一个从网页作为 json 传递的模型,并使用控制器中的模型构建来解析 .Net Core 3.1 服务器中的属性。我们想用自定义属性装饰该模型的某些属性,以便“帮助器”方法可以对控制器中的指定属性执行转换。
当我们的模型没有属性时,一切都可以编译并正常工作。
我们为这个模型创建了一个类(LoginModel),并用我们的自定义属性 [Courier] 装饰了一个属性。
我们为自定义属性创建了一个类
当我尝试构建我们的项目时,我收到以下错误:
错误 CS0246 找不到类型或命名空间名称“CourierAttribute”(您是否缺少 using 指令或程序集引用?)
和
错误 CS0246 找不到类型或命名空间名称“Courier”(您是否缺少 using 指令或程序集引用?)
这两个文件在同一个项目和同一个命名空间中“并排”。我尝试用同样的问题命名属性“MyCustomAttribute”。当(在 VS2019 中)我点击属性时,我看到一个引用并且可以“跳转”到它,所以看起来至少 VS 知道它们在那里,但项目不会编译。
有什么想法吗?谢谢。
c# - ASP.NET Core 3.0 Identity 没有向我的浏览器添加任何身份验证数据
问题是我使用 ASP.NET Core Identity 来存储用户数据,但是当我登录时,它没有给我任何 cookie 或会话。它只是告诉我我已经成功登录,但是下次我想访问包含属性的网页时[Authorize]
,我就是不能。它会将我重定向到登录页面。
Startup.cs
这意味着该应用程序不会给我任何我已登录的凭据。
.net-core - IHttpContextAccessor.HttpContext 在生产环境中为空
我有一个在开发和生产中表现不同的 Blazor Server 应用程序。问题是,在生产中HttpContext
中,服务类中始终为空
所有服务类都派生自一个BaseService
类。在构造函数中注入了所有依赖项。还有IHttpContextAccessor
.
BaseService.cs
每当我需要某个服务类中的当前用户时,我都会调用var user = GetUserAsync();
并获取它。
当我在 Visual Studio 中调试应用程序时,此实现完美运行,但在生产中,我无法访问HttpContext
. 生产环境是 Ubuntu 18、Apache2 和 Cloudflare 的组合。
目前,我不知道从哪里开始寻找。生产中的其他一切也都有效。只要我不尝试访问 HttpContext。
c# - StructureMap -> Lamar .NET Core 3.1 服务创建不起作用
我正在尝试在最新的 dotnet 核心版本 (3.1) 上从 StructureMap 迁移到 Lamar (4.1.0)
这个项目在切换到 Lamar 之前就已经工作了,但是发生了很大的变化,我有点失落了。
问题?
扫描发生后,如何使用已扫描对象的构造函数创建对象的实例。我知道 StructureMap 有点不同,但是这段代码以前有效。
下面的代码:
Startup.cs(尝试新的 Lamar)
Startup.cs(旧版本)
New Lamar (4.1) 不再允许我在没有参数的情况下创建
尝试了所有的实例化,但它们没有工作......所以我在这里
程序.cs