我想在 ASP.NET Core 2.1 中运行后台作业。它必须每 2 小时运行一次,并且需要访问我的 DI 容器,因为它将在数据库中执行一些清理工作。它需要async
并且应该独立于我的 ASP.NET Core 2.1 应用程序运行。
我看到有一个IHostedService
,但 ASP.NET Core 2.1 还引入了一个名为的抽象类BackgroundService
,它为我做了更多的工作。看起来不错,我想用它!
不过,我一直无法弄清楚如何运行源自BackgroundService
计时器的服务。
我是否需要ExecuteAsync(token)
通过记住它上次运行的时间并确定这是否是 2 小时来配置它,或者是否有更好/更清晰的方法来说明它必须每 2 小时运行一次?
另外,我解决问题的方法是否正确BackgroundService
?
谢谢!
编辑:
将此发布在MS 扩展存储库上
c# background-process background-service asp.net-core asp.net-core-2.1
我有一个使用 node.js 14.16.0 的项目。我和我的团队成员都使用那个版本。我使用 npm 6.14.11 而我的团队成员使用 npm 7.xx 这导致 package-lock.json 不同;该lockFileVersion
属性在我的 PC 上为 1,但在他们的 PC 上为 2。
我已经使用nvm
并且正在考虑添加一个,.nvmrc
以便每个人始终使用相同的节点版本,但这并不能解决 npm 版本问题。
我相信使用已安装的 node.js 版本提供的 npm 版本是个好主意。如果下一个大型 LTS 版本使用新的 npm 版本,项目将切换到该版本。但是在NPM 的网站上,他们说:
npm 是一个独立于 Node.js 的项目,更新频率更高。因此,即使您刚刚下载了 Node.js(以及 npm),您也可能需要更新您的 npm。幸运的是,npm 知道如何自我更新!
这让我相信我应该经常更新。
但他们也说:
Node.js 有很多版本!要有效地使用 Node.js 以及 npm,您需要确保您使用的是 Node.js 团队支持的版本。通常,您应该使用标记为“LTS”的 Node.js 版本。
这让我相信我不应该更新而只使用 node.js 提供的一个。
最佳做法是什么?NPM 没有 LTS 的概念吗?
我正在学习如何使用Xamarin表单,我想在Xamarin Forms上实现(推送)通知.我用Google搜索但无济于事.有谁知道如何使用Xamarin Forms实现本地/推送通知?我将在以后使用实际的服务器,但现在只是在我按下按钮时显示通知,对我来说完全没问题.
谢谢你的帮助!
编辑:
我现在使用DependencyService来访问Device OS的通知系统,而不是尝试使用Xamarin Forms本身.不再需要这个问题的答案了!
我的问题如下.我收到了一个在我的.NET 4.7.1 ASP.NET应用程序中实现的WSDL,因此另一家公司可以从我们实现的WSDL调用一个操作.它们需要一些特定的WCF服务设置.
Custom Binding -> Security -> MutualCertificate
它.我已经指定了应该使用的服务和客户端证书.(请注意,在WSDL实现不需要WCF,他们说,消费者可以自由地实现它在任何语言.我选择使用WCF,他们有一些关于它的文档,所以我认为它应该得到支持.)
当我直接在SOAP UI中导入他们的WSDL时,它说它使用SOAP 1.1.SOAP 1.1命名空间在WSDL中可见.
当我导入我的服务的WSDL(它依次实现其WSDL生成的接口)时,它使用SOAP 1.2.这是一个不匹配,非常烦人.
我发现这篇文章:https://stackoverflow.com/a/22255554/3013479我试图删除HttpSoap12
并添加HttpSoap
.我已设置MessageVersion
为Soap11WSAddressing10
所以它应该使用SOAP1.1 ..但它不起作用.
当我在BasicHTTPBinding
没有任何配置的情况下使用该绑定时,它确实使用SOAP 1.1
这是我的约束力:
<customBinding>
<binding>
<textMessageEncoding writeEncoding="utf-8" messageVersion="Soap11WSAddressing10" />
<security
authenticationMode="MutualCertificate"
enableUnsecuredResponse="false"
messageProtectionOrder="EncryptBeforeSign"
includeTimestamp="true"
defaultAlgorithmSuite="TripleDesRsa15"
allowSerializedSigningTokenOnReply="false"
messageSecurityVersion="WSSecurity10WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10"/>
<httpsTransport requireClientCertificate="true"/>
</binding>
</customBinding>
Run Code Online (Sandbox Code Playgroud)
我相信我需要一个自定义绑定,因为在他们的一个文档中,他们提到了自定义绑定的一些属性.我不确定!此外,此绑定生成一个AssymetricBinding
,我相信没有其他默认绑定执行此操作.
有人有任何提示吗?你们需要WSDL的知识吗?从理论上讲,我无法/允许调整WSDL,因为那时服务可能无法连接到我们.如果我确实需要调整WSDL,请告诉我为什么我可以与公司沟通.
当我编写 C# 时,我有时会缺少 3-4 个使用,我可以使用工具提示窗口添加它们 -> 添加缺失使用,或执行 ctrl + 。在缺少 using 的行上。
这样做3-4次相当烦人。
我注意到有时“添加所有丢失的使用”工具提示有效,但我无法让它可靠地弹出。
我知道 resharper 有它,但我不想为此功能使用付费扩展。
我怎样才能可靠地弹出这个“添加所有缺失的使用”,或者我可以通过什么其他方式一次添加所有缺失的使用?
谢谢!
我有一个 .NET 5.0 ASP.NET Core 项目,我正在使用它Nswag
来生成 API 客户端。假设我有以下 API 模型:
public class GetFooListResponseModel
{
public string Bar { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想要的是两件事。让我们从基本的开始。
Foo
不是GetFooListResponseModel
.非常感谢!
今天我正在查找一些有关 Azure Pipelines 中的缓存以及安装 NPM 包的信息。我们npm ci
在管道中使用这可能需要一段时间。缓存可能会加快速度(并引入其他风险),我想知道缓存npm ci
在 CI/CD 管道中是否是一个好主意,因为我发现了很多关于此的相互矛盾的信息。
如果我阅读官方文档,内容如下:
因为
npm ci
删除node_modules
文件夹是为了确保使用一致、可重复的模块集,所以您应该node_modules
在调用npm ci
.
造成如此缓慢的原因npm ci
是它必须检索所有node_modules
. 但我从上面这句话中可以得出的唯一结论是我们不应该缓存node_modules
。那么,如果未缓存,启用该缓存任务有什么意义呢?我的假设是,如果不缓存,您就会失去缓存所带来的速度优势。npm ci
node_modules
node_modules
npm ci
提供基于package-lock.json
. 但是,如果您将缓存添加到混合中并node_modules
从缓存而不是服务器检索一些包,则会产生检索陈旧/过时/错误包的风险,因为缓存失效很难。
基于此,缓存npm ci
永远不应该一起使用,对吧?
前面的标题告诉我,我不应该尝试npm ci
通过在天蓝色管道中使用缓存来加快速度。但是,如果您使用您最喜欢的搜索引擎并搜索azure pipelines cache npm
,您会发现很多资源告诉您具体如何执行此操作。包括堆栈溢出的答案:
您还可以找到更多。为什么会有这么多相互矛盾的信息? …
我的目标是使用以下代码使 Entity Framework 2 运行良好:
public class Foo
{
public Guid Id { get; } // This should NOT change
public string NotRequiredProperty {get; set;}
public Foo(Guid id) => Id = id;
private Foo() { } // Empty constructor is necessary for EF Core I believe?
}
Run Code Online (Sandbox Code Playgroud)
我已经阅读了这篇博客文章,它说可以做到以下几点:
// Class
private Guid _id;
public Guid Id => _id;
// Configuration
modelBuilder.Entity<Foo>()
.Property(b => b.Id)
.UsePropertyAccessMode(PropertyAccessMode.FieldDuringConstruction);
Run Code Online (Sandbox Code Playgroud)
这可以工作。
我在这里看到的唯一改进是我需要明确声明一个私有支持字段,即使一个{ get; }
意味着一个是隐式创建的。
我怎样才能让 EF Core 与 JUST a 一起工作 …
编辑:这已经解决了。请在下面查看我的编辑。对于不需要“完全忽略声明”覆盖的更“默认”解决方案,请参阅已接受的答案。在撰写本文时,下面的 My EDIT 包含的代码可帮助您支持另一种情况,您希望完全忽略该要求而不是覆盖它。
我看过很多关于这个问题的帖子,但没有一个能真正解决我的问题。 可悲的是,一种有前途的方法对我不起作用。
我有一些政策。默认的要求存在声明。但另一项政策要求此声明不存在。如果默认的一个应用于控制器,我不能在方法上应用另一个。不是覆盖我以前的保单,而是将保单全部收集在一起,第一个保单失败,因为索赔不可用。
一个很好的例子:
启动:
services.AddAuthorization(options =>
{
// 99% of the methods require you to have this claim, so we set this as default.
options.DefaultPolicy = new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser()
.RequireClaim("UserId")
.Build();
options.AddPolicy("UnregisteredUsers",
new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser() // You DO need to be authorized, but that does not mean you already have an account!
.RequireAssertion(x => x.User.FindUserIdClaim() == null) // If you do not have a user ID, you can not access endpoints that …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个集成测试,用于测试将文件上传到我的端点之一并检查请求结果是否正确!
我IFormFile
在控制器中使用来接收请求,但收到 400 Bad 请求,因为显然我的文件为空。
如何允许集成测试将文件发送到我的端点?我找到了这篇文章,但只讨论了模拟IFormFile
,而不是集成测试。
我的控制器:
[HttpPost]
public async Task<IActionResult> AddFile(IFormFile file)
{
if (file== null)
{
return StatusCode(400, "A file must be supplied");
}
// ... code that does stuff with the file..
return CreatedAtAction("downloadFile", new { id = MADE_UP_ID }, { MADE_UP_ID };
}
Run Code Online (Sandbox Code Playgroud)
我的集成测试:
public class IntegrationTest:
IClassFixture<CustomWebApplicationFactory<Startup>>
{
private readonly CustomWebApplicationFactory<Startup> _factory;
public IntegrationTest(CustomWebApplicationFactory<Startup> factory)
{
_factory = factory;
}
[Fact]
public async Task UploadFileTest()
{
// Arrange
var …
Run Code Online (Sandbox Code Playgroud) c# ×8
asp.net-core ×4
node.js ×2
npm ×2
.net ×1
.net-core ×1
asp.net ×1
caching ×1
nswag ×1
nswagstudio ×1
openapi ×1
package.json ×1
soap ×1
testing ×1
versioning ×1
wcf ×1
web-services ×1
xamarin ×1