问题标签 [asp.net-core-2.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.
iis - 以编程方式修改 ACL 以授予应用程序池对应用程序 (IIS) 的所有权限
我有一个使用 Microsoft.Web.Administration 命名空间中的服务器管理器对象创建应用程序和应用程序池的进程,首先创建应用程序池,然后创建应用程序,将新创建的应用程序池分配给应用程序,代码如下。
应用程序创建功能
和应用程序池创建。
这一切都很好,我唯一的问题是我必须进入应用程序文件夹并手动为应用程序池分配权限。
我在 ServerManager 文档中看不到任何可以帮助我的东西,而且我想不出一种方法来使用 Directory.SetAccessControl 方法来授予应用程序池权限。有没有办法在代码中做到这一点?
如果我使用了错误的术语或任何东西,我深表歉意,我一般都是出版新手。如果您需要更多信息,请告诉我。
c# - 如何使用 EF Core 和 NET Core 2.1 正确播种数据?
我的OnModelCreating方法上有这段代码:
当我生成迁移时,EF 创建插入操作如下:
好的!
但是.. 当我生成另一个迁移时,EF 重复此插入操作(在删除行之前和之后,插入新行)
如果与主表和数据库对应的此实体在另一个表中具有相关行。
如何避免在每次迁移中插入?
c# - 将 B2C 回复 URL 从“signin-oidc”更改为其他内容不起作用
我正在尝试使用 Azure AD B2C 运行ASP.NET Core 2.1 Web 应用程序。我在经过大量研究(以及更多的试验和错误)后运行了这个,因为文档中的说明有点偏离。
登录/注册过程使用项目设置向导期间的默认脚手架,加上新的Microsoft.AspNetCore.Authentication.AzureADB2C.UI Nuget,这在启动过程中产生了简化但“后备箱”的体验。
目前的问题是我无法使用不同于“signin-oidc”的自定义回复 URL 来完成这项工作。我已经读过“signin-oidc”以某种方式被嵌入到提供程序中,因此是默认设置。
我定义OnboardingController
了一个Start
操作,我希望用户在注册后登陆,所以我做了以下事情:
- A)我测试了 URL 是否
localhost:12345/Onboarding/Start
有效。页面显示正确。 - B)在 appsettings.json 我将 AzureAdB2C 更改
"CallbackPath": "/signin-oidc"
为"CallbackPath": "/Onboarding/Start"
C) 我去租户并将应用程序的回复 URL 更改为
localhost:12345/Onboarding/Start
. 重要附注:与 ADB2C 示例和指南不同,您必须在回复 URL 后附加 signon-oidc 或自定义请求路径!本地主机:12345 还不够!我可以确认身份验证有效: Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler:Information: AuthenticationScheme: AzureADB2CCookie 已登录。Microsoft.AspNetCore.Hosting.Internal.WebHost:Information: 请求在 56.201 毫秒内完成
然后,当我在浏览器中手动导航到 /Onboarding/Start 时,我得到
来自 RemoteAuthentication 的错误:关联失败。
1. 但我从未被重定向到预期/开始页面。相反,我回到了根主页,就像我使用“signin-oidc”时发生的情况一样。为什么会这样,我如何让它停止去那里?
2. 我怎样才能让回复 URL 因您是登录还是 UP 不同而有所不同?我真的不能对一个使用注册策略,对另一个使用单独的登录策略,因为回复 URL 是相同的。
我是 .Net Core 的新手,我什至不知道如何调试它。使用 B2C 登录似乎是一个晦涩难懂的过程。任何见解将不胜感激。
编辑:这是自定义帐户控制器,它未内置在 AzureADB2C 的 Nuget 包中。虽然 Nuget 包提供了一个内部 AccountController,但它不允许您设置自定义回复 URL。然而,使用我自己的帐户控制器对我不起作用。我也没有收到“相关失败”错误,而是完全没有错误。
B2C 的 startup.cs 代码与为我生成的默认 .NETCore 2.1 模板相同:
sqlite - 在 ASP.NET Core 2.1 中使用带有实体框架核心的 Sqlite 不起作用
我正在 ASP.NET Core 2.1 中启动 Razor 页面项目。我正在尝试使用 SQLite,但是在配置数据库时,似乎只有 SQL Server 是一个选项。
启动.cs
Intellisense 无法识别options.UseSqlite
并且构建失败。这不是/不是 .net core 2.0 项目的问题。
这还不支持吗?通读文档看起来确实如此。我不确定这里还有什么问题。
asp.net-core-2.1 - 隐式本地化法语中的“必需”注释
TLDR;如何获取行为
虽然只写
据我了解,文档没有提供隐式本地化一组给定 DataAnnotations 的方法。
我希望有诸如注释的错误消息,Required
并且StringLength
可以在不触及其他注释的情况下被覆盖,Display
并且不需要使用ErrorMessage
属性显式指定翻译。
注意:我只需要将消息翻译成法语,因此不需要将解决方案绑定到请求的语言。
我尝试了以下方法:
从这个GitHub 线程
在里面Startup.cs
给我以下错误
无法将属性或索引器“DefaultModelBindingMessageProvider.AttemptedValueIsInvalidAccessor”分配给 - 它是只读的
而且我找不到任何可以用作该对象的设置器的属性。
从这个答案
在Startup.cs
services.AddSingleton();
并创建一个像follow这样的类
但这仅捕获了DataType
注释
azure - localhost 和 Azure 中的不同 asp.net 核心逻辑
我的Asp.Net Core 2.1 Razor
页面网络应用程序使用Pages/Shared/_Layout.cshtml
其中包含标签<partial name="_LoginPartial" />
。如果它在 中运行localhost
,则在发布时Azure
使用 ,Pages/_LoginPartial.cshtml
而不是Pages/Shared/_LoginPartial.cshtml
。此外,如果我删除Pages/_LoginPartial.cshtml
并部署应用程序,Azure 服务器会显示不存在的旧版本Pages/_LoginPartial.cshtml
. 看起来某种缓存正在发生。我的问题是:
- 为什么
Azure
服务器不使用Pages/Shared/_LoginPartial.cshtml
而不是“不存在”的页面? Pages/_LoginPartial.cshtml
当服务器被删除而不是存在时,服务器从哪里得到Pages/Shared/_LoginPartial.cshtml
?
hangfire - 在 ASPNET Core 2.1 应用程序中正确设置挂火作业?
迁移到 asp.net core 2.1 破坏了我们的 hangfire 作业设置。
在我们的Main
方法中,Program.cs
我们有类似的东西
BuildWebHost
看起来像这样:
ConfigureHangfireJobs
正在调用RecurringJob.AddOrUpdate()
需要JobStorage.Current
设置的,我发现它是在添加hangfireserver中间件时设置的,而在Startup.ConfigureServices
方法中配置了hangfire服务。据我所知,中间件设置是在类的Configure
方法中完成的Startup
,所以我们称之为app.UseHangfireServer
设置JobStorage.Current
.
在核心 2.0 中,一切都运行良好,因为Configure
在我们的方法期间调用了该BuildWebHost()
方法,因此JobStorage.Current
随后设置并可用于ConfigureHangfireJobs
. 但是当切换到核心 2.1 时,Configure
现在将作为方法的一部分调用webHost.Run()
。这意味着我们的ConfigureHangfireJobs
now 失败了,因为JobStorage.Current
尚未准备好。
现在,我当然可以将hangfire 作业设置为该Startup.Configure
方法的一部分,但这不属于它。另一种选择是设置JobStorage.Current
我自己,但这不是 hangfireserver 中间件的责任吗?
所以我的问题是:我们应该如何在 core 2.1 中正确设置 hangfire 作业?
.net-core - 由 HttpClientFactory 创建的 HttpClient 实例是否应该被释放?
因此,我在 Startup.cs 中使用服务集合注册了一个命名客户端:
现在可以IHttpClientFactory
从我的服务提供商那里注入一个。
使用这个IHttpClientFactory
,我想出了一个客户端实例:
曾几何时,在处理HttpClient
实例时必须非常小心,因为这很少是正确的做法。
但是,现在我们有了HttpClientFactory
,这还重要吗?应该/可以client
放心地处理吗?例如
c# - ASP.NET Core 2.1 提供来自另一个项目的静态文件
我正在尝试使用 ASP.NET Core 2.1 后端提供 API 和 Angular 前端。Startup.cs
是在项目中MyApp.Api
。我希望从另一个项目的 wwwroot 中提取我的静态文件,MyApp.FrontEnd
.
我看过这篇文章,它描述了以下方法
但是,当我尝试用我的项目名称替换“OpenIddicts.Assets”时,我收到以下错误:
FTL 应用程序启动异常 System.IO.FileNotFoundException:无法加载文件或程序集“MyApp.FrontEnd,Culture=neutral,PublicKeyToken=null”。该系统找不到指定的文件。文件名:'MyApp.FrontEnd,Culture=neutral,PublicKeyToken=null'
上面链接的帖子中引用的 GitHub 存储库似乎不再存在。我想我错过了一个相当明显的地方。任何帮助,将不胜感激。