小编Ste*_*phu的帖子

从Controller调用SignalR Core Hub方法

如何从Controller调用SignalR Core Hub方法?
我使用ASP.NET Core 2.0与Microsoft.AspNetCore.SignalR(1.0.0-alpha2-final).

我有与Excel,SolidEdge通信的Windows服务...当操作完成后,它会在ASP.NET核心应用程序中向我的控制器发送请求.现在我需要通过SignalR通知连接到服务器的所有客户端,外部程序完成了一些任务.
我无法改变窗口服务的工作方式.(无法从窗口服务连接到SignalR).
我为旧的SignalR(GlobalHost.ConnectionManager.GetHubContext)找到了很多解决方案,但是已经发生了很大变化,而且这些解决方案不再适用了.

我的控制器:

[Route("API/vardesigncomm")]
public class VarDesignCommController : Controller
{
    [HttpPut("ProcessVarDesignCommResponse/{id}")]
    public async Task<IActionResult> ProcessVarDesignCommResponse(int id)
    {
        //call method TaskCompleted in Hub !!!! How?

        return new JsonResult(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的中心:

public class VarDesignHub : Hub
{
    public async Task TaskCompleted(int id)
    {
        await Clients.All.InvokeAsync("Completed", id);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# signalr asp.net-core-2.0 asp.net-core-signalr

39
推荐指数
4
解决办法
3万
查看次数

在asp.net core 2.0 Web应用程序中使用NLog

哪个是在asp.net core 2.0 Web应用程序中使用Nlog的最佳方式

我找到了很多不同的解决方案如何配置.这是其中两个.还有其他更好的方法吗?

A)在启动服务器之前创建记录器:

 public class Program
{
    public static void Main(string[] args)
    {    
        // NLog: setup the logger first to catch all errors
        var logger = NLogBuilder.ConfigureNLog("NLog.config").GetCurrentClassLogger();    
        try
        {
            logger.Debug("init main");
            BuildWebHost(args).Run();
        }
        catch (Exception e)
        {
            //NLog: catch setup errors
            logger.Error(e, "Stopped program because of exception");
            throw;
        }    
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>().UseNLog() // use NLog for DI Logger
            .Build();
}
Run Code Online (Sandbox Code Playgroud)

B)配置内部启动

public class Startup
    {
        public Startup(IHostingEnvironment env, IConfiguration configuration)
        { …
Run Code Online (Sandbox Code Playgroud)

c# nlog asp.net-core-2.0

8
推荐指数
1
解决办法
8734
查看次数

使用 AutoMapper 将字符串列表映射到对象列表

我有一个域和实体类,如下所示:

public class DomainUser
{
    public string Username {get;set;}
    public IList<string> PhoneNumbers {get;set;}
}

public class EntityUser
{
    public string Name {get;set;}
    public IList<Phone> PhoneNumbers {get;set;}
}
public class Phone
{
    public int Id {get;set;}
    public string PhoneNumber {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 Automapper 进行DomainUser映射EntityUser。但我不知道如何从 映射IList<string>IList<Phone>并填充该PhoneNumer属性。

我的CreateMap看起来像这样:

Config.CreateMap<DomainUser, EntityUser>()
    .ForMember(dest => dest.Username, opts => opts.MapFrom(src => src.Username)
    .ForMember(entity => entity.PhoneNumbers.Select(x => x.PhoneNumber), opts => opts.MapFrom(domain => domain.PhoneNumbers) // This doesn't …
Run Code Online (Sandbox Code Playgroud)

c# automapper

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

注入ILogger <T>每次都会创建一个新的记录器吗?

文档中的日志记录示例中,有一个示例如何将记录器注入控制器:

public class TodoController : Controller
{
    private readonly ITodoRepository _todoRepository;
    private readonly ILogger _logger;

    public TodoController(ITodoRepository todoRepository,
        ILogger<TodoController> logger)
    {
        _todoRepository = todoRepository;
        _logger = logger;
    }
}
Run Code Online (Sandbox Code Playgroud)

每次我将记录器注入此处时,DI框架是否会创建一个新的记录器?有没有更好的办法?

c# asp.net-core asp.net-core-2.0

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

使用 restsharp 和 WebAPI 进行数据流传输

我的目标是 GET 和 POST 文件到 SP Online。

我用这两种方法编写了一个 WEB API。这些方法使用 CSOM 与 SP Online 进行交互。

GET 将响应 Ok(字节数组)返回给客户端,POST 获取要在请求正文中上传的整个文件,并以块的形式执行上传到 Sharepoint Online。

有人告诉我,我应该使用流技术,因为上下文是具有许多同时请求的企业应用程序。所以 GET 方法应该向客户端返回一个流,客户端应该将请求作为流发送到 POST。

在客户端,我被迫使用 RestSharp 库。

所以:

1)如何使用RestSharp来处理流?

2) WebAPI 如何返回流?

3)随着文件,我发送了很多元数据。如何以流模式上传文件并只发送一次元数据?

客户端,get 需要一个字节数组,post 发送一个字节数组和元数据。

在网上我发现了太多的技巧。有标准的吗?

c# restsharp asp.net-web-api sharepoint-online

2
推荐指数
1
解决办法
5683
查看次数