小编Mr.*_*. T的帖子

Asp.Net Identity 2.0 - 如何使用SmtpClient实现IIdentityMessageService来执行异步SMTP?

我已经为Asp.Net Identity 2.0实现了一个简单的EmailService(通过IIdentityMessageService界面.

    public class EmailService : IIdentityMessageService
{
    public Task SendAsync(IdentityMessage message)
    {
        // convert IdentityMessage to a MailMessage
        var email = 
           new MailMessage(new MailAddress("noreply@mydomain.com", "(do not reply)"), 
           new MailAddress(message.Destination))
        {
            Subject = message.Subject,
            Body = message.Body,
            IsBodyHtml = true
        };

        using (var client = new SmtpClient()) // SmtpClient configuration comes from config file
        {
            return client.SendMailAsync(email);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

要发送电子邮件,我将通过UserManager:

await _userManager.SendEmailAsync(user.Id, "Confirm your account","Please confirm your account by clicking this link: <a href=\"" + callbackUrl …

c# smtpclient asp.net-identity

27
推荐指数
2
解决办法
2万
查看次数

VS2019 .editorconfig 不受尊重

我们正在努力为 javascript/typescript 设置团队标准的缩进样式,并且从所有迹象来看,当我们打开解决方案时,设置.editorconfig没有覆盖 VS 底部所示的用户首选项

在此处输入图片说明

出于测试目的,我创建了世界上最简单.editorconfig的缩进大小值,并将其添加到解决方案的根文件夹中:

# All files
[*]
indent_style = space
indent_size = 27
Run Code Online (Sandbox Code Playgroud)

然后,在工具下 | 选项 | 文本编辑器 | JavaScript/TypeScript | 标签,我设置了不同的缩进大小值:

在此处输入图片说明

所以 - 如果.editorconfig真的被使用,任何重新格式化 Typescript 文件的尝试都应该导致每级缩进 27 个空格。没有骰子。

我尝试将文件移动到与我要格式化的 Typescript 文件相同的文件夹中。没有骰子。

我已经验证在工具下选择了“遵循项目编码约定” 选项 | 文本编辑器 | 一般的。我也关掉了。没有骰子。

始终格式化为工具 | 中指定的缩进大小。选项。

有没有我遗漏的魔法酱?

editorconfig visual-studio-2019

14
推荐指数
1
解决办法
2688
查看次数

VS2013:"匹配大小写"始终默认在"查找和替换"对话框中进行检查

我不确定它何时开始发生或如何发生(虽然它可能与VS2013 Update 4一致),但出于某种原因,每次我启动VS2013并进入"查找和替换"对话框(Ctrl-Shift-F) ,选中"查找选项"下的"匹配大小写".以前,该选项要么未经检查,要么最坏是"粘性" - 这意味着它保留了VS2013运行之前的选择.

查找和替换对话框

我可以取消检查并运行搜索,只要Visual Studio的实例正在运行,它就会保持未检查状态,但是下次启动VS2013时,会再次检查它.在工具|下找不到任何明显的设置 选项.

visual-studio-2013

11
推荐指数
2
解决办法
1088
查看次数

SeriLog和.NET Core 2.1 HostBuilder配置

我正在使用.NET Core 2.1 HostBuilder类来设置和运行GRPC服务器,并且无法正确配置SeriLog,以便.NET Core日志管道使用它以及在其他地方可用(通过依赖注入)我的应用.

class Program
{
    private static async Task Main(string[] args)
    {
        var hostBuilder = new HostBuilder()
            .ConfigureServices((hostContext, services) =>
            {
                services.AddSingleton<ILogger>(BuildLogger);

                // other services here 
            })
            .ConfigureLogging((hostContext, loggingBuilder) =>
                loggingBuilder.AddSerilog(dispose: true));

        await hostBuilder.RunConsoleAsync();
    }

    private static ILogger BuildLogger(IServiceProvider provider)
    {

        // create a (global) logger
        Log.Logger = new LoggerConfiguration() 
            ...
            .CreateLogger();

        return Log.Logger;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我需要调用才能loggingBuilder.AddSerilog()使用在ILogger上面几行中使用DI服务配置注册的单例.

我意识到我可以直接调用BuildLogger()获取ILogger实例并使用DI服务配置注册该实例,但似乎我不应该这样做.我正在寻找的是一种方法,从.ConfigureLogging()方法中访问一个ServiceProvider实例,所以我可以得到注册ILogger可能喜欢

serviceProvider.GetRequiredService<ILogger>();
Run Code Online (Sandbox Code Playgroud)

并将其传递给AddSerilog()电话.有任何想法吗?

c# serilog .net-core-2.1

9
推荐指数
3
解决办法
8024
查看次数

在ASP.Net Core应用程序中的哪里验证AutoMapper配置?

正在构建ASP.Net Core 2.0 Web应用程序,无法确定在何处验证AutoMapper配置。

用我的ConfigureServices()方法,我有

services.AddAutoMapper();
Run Code Online (Sandbox Code Playgroud)

我正在自动映射器配置文件中注册我的映射

public class MyAutomapperProfile : Profile
{
    public MyAutomapperProfile()
    {
        CreateMap<FooDto, FooModel>();
        CreateMap<BarDto, BarModel>();
    }
}
Run Code Online (Sandbox Code Playgroud)

但不清楚在哪里打电话

Mapper.Configuration.AssertConfigurationIsValid();
Run Code Online (Sandbox Code Playgroud)

automapper .net-core

8
推荐指数
2
解决办法
1487
查看次数

ReSharper,<inheritdoc />并悬停Intellisense

当您将鼠标悬停在该项目的使用上时,ReSharper是否应该为使用该标记的项目提供弹出式智能感知文档?

如果是这样,它对我不起作用 - 至少,不是一贯的.使用ReSharper Ultimate 2018.1.3

public interface IFoo
{
    /// <summary>
    /// Gets or sets the value of Bar
    /// </summary>
    int Bar { get; set; }
}

public class FooImpl : IFoo
{
    #region Implementation of IFoo

    /// <inheritdoc />
    public int Bar { get; set; }

    #endregion
}

public class TestFooImpl
{
    public void Test()
    {
        var foo1 = new FooImpl
        {
            Bar = 3
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

当我将鼠标悬停在对FooImpl.Bar的引用上时,我没有得到任何有用的弹出式智能感知: 在此输入图像描述

但是当我按ctrl + shift + F1时:

在此输入图像描述

ReSharper配置为覆盖通常的VS intellisense行为:

在此输入图像描述

resharper intellisense

7
推荐指数
0
解决办法
660
查看次数

IHost.RunAsync() 永远不会返回

我正在构建一个 .NET Core 3.1 应用程序,它将BackgroundService在 Docker 容器中运行。虽然我已经实现了 BackgroundService 的启动和关闭任务,并且该服务在通过 触发时肯定会关闭SIGTERM,但我发现该await host.RunAsync()调用永远不会完成 - 这意味着我的块中的剩余代码Main()不会执行。

我是否遗漏了某些内容,或者我不应该期望RunAsync()在后台服务完全停止后调用返回控制权?

(用我能想到的最简单的重现进行更新......)

    using System;
    using System.Threading;
    using System.Threading.Tasks;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.Hosting;

    namespace BackgroundServiceTest
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                Console.WriteLine("Main: starting");
                try
                {
                    using var host = CreateHostBuilder(args).Build();

                    Console.WriteLine("Main: Waiting for RunAsync to complete");

                    await host.RunAsync();

                    Console.WriteLine("Main: RunAsync has completed");
                }
                finally
                {
                    Console.WriteLine("Main: stopping");
                }
            }

            public static IHostBuilder CreateHostBuilder(string[] args) …
Run Code Online (Sandbox Code Playgroud)

c# .net-core-3.0

7
推荐指数
1
解决办法
5212
查看次数

Serilog“达到最大解构深度”

我已启用 SeriLog(最新版本)自记录功能,并且看到数百条消息说

达到最大解构深度

不知道这意味着什么以及这是否是我需要担心的问题。

有谁知道是什么触发了这条消息以及我是否做错了什么?

serilog

6
推荐指数
1
解决办法
2027
查看次数

Azure缓存 - 如何确定密钥是否在缓存中?

有没有办法,使用Azure缓存,来确定缓存中是否存在具有特定键的对象,而不实际返回对象本身?

我现在正在做类似的事情

    public bool IsKeyInCache(string cacheKey)
    {
        DataCacheItem item = null;
        CacheRetryPolicy.ExecuteAction(() =>
        {
            item = cache.GetCacheItem(cacheKey);
        });

        return item != null;
    }
Run Code Online (Sandbox Code Playgroud)

但是,因为缓存中的对象非常庞大且反序列化很昂贵,所以性能非常糟糕.

我已经挖掘了MSDN文档并没有看到任何替代方案,但也许我错过了一些东西.

到目前为止,我最好的想法是添加一个小的"标记"对象与我的大对象同时缓存,并检查反序列化是否便宜的"标记"对象的存在.但这不是一个强大的解决方案,因为我的大对象完全有可能在"标记"对象保留时从缓存中清除.

c# azure-caching

5
推荐指数
1
解决办法
461
查看次数

Docker 从 Dotnet Core 2.0 应用程序正常关闭

我有一个在本地 Docker Linux 容器(Docker CE 18.03.1 稳定通道)中运行的 .NET Core 2.0 控制台应用程序,我正在尝试处理正常关闭。

我的应用程序具有用于AppDomain.CurrentDomain.ProcessExit和的处理程序AssemblyLoadContext.Default.Unloading

        AppDomain.CurrentDomain.ProcessExit += CurrentDomain_ProcessExit;
        AssemblyLoadContext.Default.Unloading += Default_Unloading;
Run Code Online (Sandbox Code Playgroud)

处理程序在被调用时简单地写入日志消息。

我发现,当我执行 a 时docker stop <containerid>,在短暂的延迟之后,两个处理程序都没有被调用。容器只是停止运行。我尝试在 Visual Studio 中调试应用程序,并尝试在没有调试器的情况下运行。在所有情况下,都不会调用处理程序。

有没有我遗漏的其他魔法咒语?

docker .net-core

5
推荐指数
1
解决办法
2113
查看次数

使用.NET 4.5基于任务的异步操作的WCF服务客户端,等待永远不会返回

我已经使用"允许生成异步操作"下的默认"生成基于任务的操作"选项向我的.NET 4.5应用程序添加了WCF服务引用.我从我自己的异步方法调用服务,有点像这样:

public async Task<SomeData> GetDataAsync()
{
    var client = new MyServiceClient();
    var result = await client.GetSomeDataAsync();

    return result;
}
Run Code Online (Sandbox Code Playgroud)

await client.GetSomeDataAsync()永远不会完成(在return语句断点从未被击中),我没有得到一个超时或任何其他错误,没有任何异常被抛出,什么都没有.Fiddler显示客户端发送了请求,服务几乎立即响应了预期的数据,所以问题就在我身边.

如果我切换到同步版本

var result = client.GetSomeData();
Run Code Online (Sandbox Code Playgroud)

该调用按预期返回.

我究竟做错了什么?

.net c# wcf async-await

4
推荐指数
1
解决办法
8990
查看次数