C# 每个 "组织 "的不同实例/SaaS的自定义代码
我正在编写一个(C#ASP.NET API)程序,该程序旨在用作SaaS.该程序具有标准功能,但是旧的(非SAA)也有每个客户的一些自定义代码与系统连接.导致每个客户的代码的不同版本. 我有一个解决方案是使用松散的耦合.但是,我该怎么做,以便在运行时调用界面的不同实例?最好是没有开关案例/if-tree. 在此解决方案上有任何帮助,但我也想知道这是否是要走的路? 在其他编程语言中,例如JavaScript您可以加载并运行代码JIT. 另一个连接的解决方案是将微服务用于需要连接到客户系统的零件.通过这样做,我可以独立于主程序更新连接器. 解决方案 您可以在依赖项注入容器中连接实现,并在运行时选择实现. 假设您有一个IDiscountCalculator接口,每个客户要求有几个不同的实现. 您将从请求中获取当前的租户/客户信息,并确定需要运行哪些实施,然后返回适当的实施. 以此示例为例(我将抽象水平保持在最低限度) services.AddS
8 2024-04-26
编程技术问答社区
并行上传多个json文件至azure blob存储
我有一个要转换为json并上传到azure blob storage的对象列表. 要按顺序进行操作,我可以使用以下代码: var objects = new List(); foreach (var obj in objects) { var blobClient = _blobContainerClient.GetBlobClient($"my_file_name.json"); using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(obj)))) { await blobClient.UploadAsync(ms, options: new BlobUploadOptions {...}); } } 我找到了这篇文章,该文章显示了如何与Azure存储并行上传大量随机数据 此示例使用文
6 2024-04-26
编程技术问答社区
EF Core 5: 配置自有类型,PK与FK相同,没有父属性
我正在尝试迁移到EF Core 5.之前用来工作的所有工作.我有以下我不想更改的结构. ActionSetup.cs public class ActionSetup { public Conditions Conditions { get; set; } } public class Conditions { public string SomeValue { get; set; } } entityConfiguration.cs public class EntityConfiguration: IEntityTypeConfiguration { builder.OwnsOne(tah => tah.Conditions, a => { a.ToTable("action_conditions");
10 2024-04-26
编程技术问答社区
如何为特定背景任务范围静态类对象?
考虑 public class BackgroundJob{ public string jobName{get;set;} ... } appconfig.cs public class AppConfig{ public static BackgroundJob currentJob{get;set;} } BackgroundJobservice.cs public interface IBackgroundJobService { ... } public class BackgroundJobService : IBackgroundJobService { private readonly ServiceScopFactory _serviceScopFactory; public BackgroundJobService(ServiceScopFactory serviceScopFactory) {
10 2024-04-26
编程技术问答社区
编译.NET5项目时缺少微软库
我正在尝试进行反编译ASP.NET Core WebApi项目并收集所有控制器的所有方法.当我的项目针对.NETCore3.1时,它可以通过运行此代码来工作: Assembly assembly = Assembly.LoadFrom(assemblyPath); // assemblyPath pointed to .dll var types = assembly.GetExportedTypes(); 但是,在更新为.NET5之后,上面的第二行(assembly.GetExportedTypes())引发了一个例外,该文件Microsoft.AspNetCore.Mvc.Core.dll丢失了.当我从一个旧项目(编译为.netcore3.1)手动复制该文件时,它起作用了! 最重要的是,当项目更加复杂时,具有EFCORE依赖性,更多...在.NET5下编译项目时丢失了更多文件.这些是: microsoft.extensions.hosting.abstracti
8 2024-04-26
编程技术问答社区
iText7-无法为SquareAnnotation内部颜色设置不透明度。
团队, 我正在使用itext7 c#库.我无法设置正方形注释内饰的不透明度. 以下是我正在使用的代码.我尝试了我们使用的所有不同方法来设置不透明度,但没有运气.我错过了什么吗? private PdfSquareAnnotation AddAnnotation(float rectHeight, float rectWidth, float x, float y) { Rectangle rect = new Rectangle(x, y, rectWidth, rectHeight); PdfSquareAnnotation squareAnnotation = new PdfSquareAnnotation(rect); squareAnnotation.SetColor(ColorConstants.GREEN); squareAnnotation.SetTitle(new PdfString("T
12 2024-04-26
编程技术问答社区
用ReplacingExpressionVisitor替换自定义ExpressionVisitor
我有以下代码工作. 但是,如果我可以消除此类并使用ReplacingExpressionVisitor,而不是像我一样使用自定义ParameterReplacer类.但是我似乎找不到正确的语法,我可以在其中获取现有参数,以便可以用parameter替换它. getDateExpression protected readonly Expression> GetDateExpression; 参数replacer internal class ParameterReplacer : ExpressionVisitor { private readonly ParameterExpression Parameter; internal ParameterReplacer(ParameterExpression parameter) { Parameter = parameter;
2 2024-04-26
编程技术问答社区
大火输入日期在价值分配时不会重新估计
我有一个来自Blazor的输入日期,如果不接受更改确认,则应将其恢复到上一个​​日期.但是,当我输入诸如11/31/2024之类的东西时,它是无效的日期,并且不接受更改时,它仍然将上一个日期视为无效的日期(红线),就好像没有更新一样. 使用WebAssembly 5.0.7 @page "/test" @if (ShowPopUp
6 2024-04-26
编程技术问答社区
在.NET 5中设置证书私钥的权限
我有一个要求我需要设置证书私钥的权限,我使用以下方法( setCertificatePrivateKeypermissions ),该方法与 .NET框架4.7.2 但是现在我不得不将项目框架迁移到 .NET 5 ,因为此项目框架升级此现有代码正在破坏. RSACryptoServiceProvider and CspParameters classes refers to System.Security.Cryptography.Csp.dll (C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\5.0.0\ref\net5.0\System.Security . 在将证书转换为privatekey到rsacryptoserviceprovider时,它正在返回null. 在创建cspparameters的实例时,我无法从RSA分配CryptokeYsecurity值,因为此属性在RSACRYPTOSERV
6 2024-04-26
编程技术问答社区
错误的JSON自定义错误响应. dotnet Core Web API
如果给出了dotnet core的WebAPI,是否有一种机制返回自定义错误响应? ,例如 如果我有一个看起来像这样的课程 public class SomeApiClass { public int Id { get; set; } } 但要这样做一个这样的帖子请求(请注意,我期望int并给出一个字符串): { "id": "f" } 然后标准dotnet响应如下: { "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1", "title": "One or more validation errors occurred.", "status": 400, "traceId": "00-27be45d9cffab14698524a63120a4f88-6bfe2613f2328a42-00", "errors": {
16 2024-04-25
编程技术问答社区
如何在.Net 5(Asp.Net)中从appsettings.json中映射出多层次的设置?
我将ASP.NET MVC应用程序迁移到.NET5.我有一个静态课程,可以用作Web.config中设置的立面.我的设置类暴露了静态属性,例如代表设置组的类中的每个类别,例如: public static class MySettings { public static class MainDB { public static string ConnectionString { get { // Code to retrieve the actual values return ""; } } } public static class ExternalApi { public static string Uri {
2 2024-04-25
编程技术问答社区
外部可执行文件不是从错误开始的"目标过程中退出而不提高CORECLR开始事件的目标"
我创建了一个类库项目,并配置了属性部分调试,以启动位于构建的输出目录中的EXE(the.exe)(如图像所示). ,只要我们有一个预构建事件,将exe和所有相关文件从构建的输出目录中的一个目录复制.不幸的是,这是不合时宜的,我们没有使用哪个版本的EXE. 因此,我创建了一个版本的Nuget软件包,以将所有文件放在输出目录中.我确认所有必需的文件(我知道)都在输出目录中.而且,由于我使用CLI手动创建了Nuget软件包,因此我可以确认它们是完全相同的文件. 但是,当我尝试从Visual Studio 2019启动应用程序时,我在调试输出中会遇到以下错误: The target process exited without raising a CoreCLR started event. Ensure that the target process is configured to use .NET Core. This may be expected if the
6 2024-04-25
编程技术问答社区
C# .NET5单文件应用程序从目录中读取和解析Json / Txt或其他文件格式
我正在读取这样的.NET框架上的文件: string path = AppDomain.CurrentDomain.BaseDirectory + @"sources\settings.json"; string jsonResult = File.ReadAllText(path); return JsonConvert.DeserializeObject(jsonResult); 当我切换到.net5时,这仅在调试模式下工作.当我使用 Publish 创建Single File Executable时,它没有运行.当您单击EXE时,它永远不会打开或引发异常.另外,try-catch块无法处理异常. 发布设置: 如何在.net5单一exe文件上完成此工作? 解决方案 您必须使用Directory.GetCurrentDirectory()而不是AppDomain.CurrentDomain.BaseDirectory. using
8 2024-04-25
编程技术问答社区
为了所有请求,请调用comcellationTokenSource回调
我设置了使用处理程序的取消tokensource public class AppTimeout { public async Task Invoke(HttpContext httpContext) { var cancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(httpContext.RequestAborted); cancellationTokenSource.CancelAfter(myTimestamp); cancellationTokenSource.Token.Register(() => { log.info("..."); });
4 2024-04-25
编程技术问答社区
ASP.NET Core 5错误:"类"是一个保留的单词,不能用隐式表达式使用
我将旧应用程序从ASP.NET MVC 5(System.Web.Mvc v5.2.7.0)迁移到ASP.NET Core 5. 在ASP.NET MVC 5中.*此代码有效: @{ var htmlAttributes = new {@class="x"}; } 我使用这种方法动态设置HTML属性,但是现在我遇到了此错误: rz1007" class"是一个保留的单词,不能用隐式表达式使用 看起来@{}语法不再有效,可以在剃须刀页面中插入脚本块. 如果我做 @Html.TextBoxFor(model => model.Name, new { @class = "bold" } ) 它有效. 任何想法如何克服此限制? 注意:这个问题是关于.net5剃须刀,而不是ASP.NET MVC 5.该方案与 解决方案 AS franz gleichmann 在上面的评论中指出,您必须使用double @@: @Html.TextBo
8 2024-04-24
编程技术问答社区
如何修复"系统.仅在Windows桌面应用程序上支持管理"例外
问题: 我们的应用程序是.NET 5 Windows桌面应用程序.许可功能要求应用程序使用 system.management 组件从Nuget创建来自系统处理器ID,MAC地址和BIOS序列号的唯一设备ID. 在Visual Studio调试器测试它时,这一切都很好.但是,当将 system.management.dll 添加到应用程序安装程序(installshield installer)时,我自然选择了应用程序构建目标文件夹中 system.management.dll 的版本.事实证明,最终在该文件夹中最终的DLL版本是一个no-op版本,抛出不支持的例外说 " system.Management在Windows Desktop Apps上仅支持"/em>. 解决方案 我认为这也许是因为缺少deps.json文件,从而导致存根版本是从应用程序目录加载的,而不是从runtimes目录中加载的.因此,要么可以将所需的依赖性安装到应用程序根目录,要么可以维护构建目录的
10 2024-04-24
编程技术问答社区
背景服务在计划外的时间运行
我有这个背景服务: public class ReminderService : BackgroundService { private readonly int[] reminderDays = { 1, 3, 6, 9 }; protected override async Task ExecuteAsync(CancellationToken stopToken) { while (!stopToken.IsCancellationRequested) { DateTime now = DateTime.Now; DateTime start = now.Date.AddHours(13); if (now > start) start = start.AddDays(1); await Task.Delay(start.
14 2024-04-24
编程技术问答社区
C# 9.0支持Visual Studio 2019中的顶层程序
随着C#9.0和.NET 5的到来5 此功能取消了许多样板代码来创建一个简单的C#应用​​程序,而不必将代码包装在通常的命名空间/class/main方法中,如欢迎来到C#9.0博客 要创建一个简单的" Hello World"应用程序 using System; Console.WriteLine("Hello World!"); 要尝试此功能,我已经安装了最新的.NET 5预览软件包(5.0.100-preview.6.20318.15)从Wihtin vs运行: using System; namespace TestProgram { class Test { static void Main(string[] args) { Console.WriteLine("Hello world!"); var fooBar = "Foo" + "bar";
14 2024-04-24
编程技术问答社区
mailkit -mimekit-如何复制到已发送文件夹
我可以使用MailKit&Mimekit发送SMTP电子邮件,而Outlook是接收这些邮件的客户端工具.以下代码已被使用,我的收件箱已收到电子邮件. var email = new MimeMessage { Sender = MailboxAddress.Parse(">") }; email.To.Add(MailboxAddress.Parse(">")); email.Subject = "Test mail from Jaish"; var builder = new BodyBuilder(); builder.TextBody = "This is a test mail from Jaish Mathews"; email.Body = builder.ToMessageBody(); using var smtp = new SmtpClient(); smtp.LocalDomain = ">"; smtp
10 2024-04-23
编程技术问答社区
封闭XML返回文件
我正在使用Blazor和.NET 5.我正在尝试使用lotexml进行Excel导出.这是我写的简单方法: public IActionResult CreateExcelSheet() { using (var wbook = new XLWorkbook()) { var ws = wbook.Worksheets.Add("Sheet1"); ws.Cell("A1").Value = "1"; using (var stream = new MemoryStream()) { wbook.SaveAs(stream); var content = stream.ToArray();
6 2024-04-23
编程技术问答社区