我正在使用Moq为我的SignalR 2.x应用程序构建一个UnitTest框架.我目前正在通过以下方式嘲笑我的客户:
var mockClients = new Mock<IHubCallerConnectionContext>();
Clients = mockClients.Object;
Run Code Online (Sandbox Code Playgroud)
为了测试,我需要测试按组发送消息:
Clients.Group(groupName).sendSomeMessage(message);
Run Code Online (Sandbox Code Playgroud)
如何向我的模拟客户端添加组支持?
为了说明这个问题,我创建了一个简单的示例项目,我在 XAML 定义中遇到了编译错误。
这是我的类定义:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MVVMTest.Foo
{
public class FooTestClass
{
public String Name { get; set; }
public String Key { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
需要注意的是 FooTestClass 驻留在 Foo 子文件夹中(MVVMTest 文件夹的)
这是我的 XAML:
<Window x:Class="MVVMTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:MVVMTest"
xmlns:mView="clr-namespace:MVVMTest.Foo;assembly=MVVMTest"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<mView:FooTestClass x:Key="ddd" />
</Window.Resources>
<Grid>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息
XML 命名空间“clr-namespace:MVVMTest.Foo;assembly=MVVMTest”中不存在标记“FooTestClass”。Line 12 Position 10.
MVVMTest C:\Dev Projects\MVVMTest\MVVMTest\MainWindow.xaml
VS 有问题吗?
我在XAML中绑定WPF ComboBox时遇到问题。
这是我的对象定义和集合:
public class AccountManager
{
public long UserCode { get; set; }
public string UserName { get; set; }
}
public partial class MainWindow : Window
{
public List<AccountManager> AccountManagers;
}
Run Code Online (Sandbox Code Playgroud)
这是我的ComboBox的XAML定义:
ComboBox Name="cbTestAccountManagers"
ItemsSource="{Binding AccountManagers}"
DisplayMemberPath="UserName"
SelectedValuePath="UserCode"
Width="250"
Run Code Online (Sandbox Code Playgroud)
我不太确定自己在做什么错。我在运行/加载时没有任何错误。组合框显示,下拉菜单中没有任何内容。(它是空的)。
有人可以指出我正确的方向吗?
谢谢
我是 Apache Kafka 的新手。我已将其安装到 Ubuntu Linux VM (18.04) 中。
我已经使用默认配置从 Kafka 目录启动了 Zookeeper。

Zookeeper 看起来启动成功了。从另一个终端窗口我试图测试。我正在使用 Telnet 连接到它并尝试发送“stat”命令。
我是 Apache/kafka 的新手,Linux 经验有限。我用谷歌搜索,但我不太清楚如何更新白名单。
我从 Zookeeper 文档中找到了以下片段:
4lw.commands.whitelist(Java 系统属性:zookeeper.4lw.commands.whitelist)
3.4.10 中的新功能:此属性包含逗号分隔的四字母单词命令列表。引入它是为了对 ZooKeeper 可以执行的命令集提供细粒度的控制,因此用户可以在必要时关闭某些命令。默认情况下,如果未指定该属性,则它包含除“wchp”和“wchc”之外的所有支持的四字母单词命令。如果指定了该属性,则仅启用白名单中列出的命令。
以下是启用 stat、ruok、conf 和 isro 命令同时禁用其余四字母词命令的配置示例: 4lw.commands.whitelist=stat, ruok, conf, isro 用户还可以使用星号选项,这样他们就不会不必将每个命令一一包含在列表中。例如,这将启用所有四个字母的单词命令:4lw.commands.whitelist=*
有人可以解释白名单的用法以及如何正确初始化它吗?
谢谢,约翰B
我希望能够按行位置将一行文本插入到文件中。
我已经看到了几个如何通过搜索行内容来执行此操作的示例,但我无法找到通过行位置执行此操作的示例。
我该如何在 PowerShell 脚本中执行此操作?
我有一个 .Net Core 应用程序,并使用 System.Data.SQLite.dll 包连接到 SQLite DB。
我正在尝试使用密码加密数据库。
在System.Data.SQLite.dll库的1.0.93.0版本中,我可以设置或更改数据库的密码加密:
SQLiteConnection con = new SQLiteConnection($"Data Source=DBName;Version=3;");
conn.SetPassword($"{password}");
conn.ChangePassword($"{password}");
conn.Open();
Run Code Online (Sandbox Code Playgroud)
在最新版本1.0.113.7中,该 api 似乎不再受支持。Visual Studio 在 SetPassword() 和 ChangePassword() 调用上引发编译器错误。
如何使用密码加密我的数据库?是否有另一种方法可以使用此库(或类似的库)来实现此目的?
我在使用 git clone 时遇到了问题。当我运行命令克隆存储库时,git 命令看起来成功完成。
git clone ssh://username@192.168.2.4:29418/sourceName
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:
ssh://username@192.168.2.4:29418/sourceName
Cloning into 'sourceName'...
Warning: Permanently added '[192.168.2.4]:29418' (RSA) to the list of known hosts.
remote: Counting objects: 14091, done
remote: Finding sources: 100% (14091/14091)
remote: Total 14091 (delta 10639), reused 13901 (delta 10639)
Receiving objects: 100% (14091/14091), 84.60 MiB | 204.00 KiB/s, done.
Resolving deltas: 100% (10639/10639), done.
Checking connectivity... done.
Run Code Online (Sandbox Code Playgroud)
所以,看起来它克隆成功了。但是当我查看目标文件夹时,我只看到 .git 文件夹被创建和填充。
没有源文件作为克隆的一部分在本地复制。
我没有看到任何错误消息。可能出什么问题了?我如何“调试”这个?
谢谢,约翰B
我有一个 C#/.Net WPF 桌面应用程序。定义了一系列 WPF 控件,我希望在这些控件中在运行时动态更改边距。
如何将控件的边距绑定到后面代码中的属性?
考虑以下控制:
<TextBox Name="Foo" Text="Foo Text" Margin="0,10,0,10">
Run Code Online (Sandbox Code Playgroud)
我在主窗口中定义了以下内容:
public double TopMargin {get; set;}
public double BottomMargin {get; set;}
Run Code Online (Sandbox Code Playgroud)
我希望能够动态更改边距,这样如果我在运行时 C# 代码中更改边距,新的边距值就会反映在 UI 中。
如果更容易,我会考虑使用:
public Thickness FooMargin{get; set;}
Run Code Online (Sandbox Code Playgroud)
实现这一点的最干净/最好的方法是什么?
谢谢
我正在努力加快 Scala 的速度,但对关键字“ implicit ”的使用有点困惑。
我想我理解隐式参数的概念,其中参数没有显式传入,Scala 将搜索正确类型的值(在调用范围内)。
我对“隐式 val ”的使用感到困惑。
考虑以下代码片段:
case class DemoApp() {
implicit val foo = CustomerFoo()
}
Run Code Online (Sandbox Code Playgroud)
这与传递到 DemoApp() 类构造函数的参数有关吗?
有人可以澄清一下吗?
谢谢,约翰B
我正在尝试完成“.NET Core Workers as Windows Services”的示例。链接在这里:https ://devblogs.microsoft.com/aspnet/net-core-workers-as-windows-services/
我已包含Microsoft.Extensions.Hosting NuGet 包。我在尝试添加.UseServiceBaseLifetime( ) 时遇到编译问题。
这是代码片段:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
namespace WorkerService1
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.UseServiceBaseLifetime()
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService<Worker>();
});
}
}
Run Code Online (Sandbox Code Playgroud)
这是编译器错误:
错误 CS1061“IHostBuilder”不包含“UseServiceBaseLifetime”的定义,并且找不到接受“IHostBuilder”类型的第一个参数的可访问扩展方法“UseServiceBaseLifetime”(您是否缺少 using 指令或程序集引用?)
我相信该示例基于 .Net Core 3.0 预览版。
我是否缺少 NuGet 包(包括参考)?
命名的方法是否已更改?
我一直在研究与负载均衡器结合的SignalR实现,并且有一些基本的(如果不是简单的声音)问题.我必须在前言中说我对负载平衡器有零(0)经验.
我们将有2台服务器位于负载均衡器后面.客户端是ASP .Net应用程序.我们被告知负载均衡器保持会话亲和力.
请考虑以下情形:
Client1 & Client2 -- connect to GroupA--> Server1
Client3 & Client4 -- connect to GroupA--> Server2
Run Code Online (Sandbox Code Playgroud)
1)Server1对GroupA进行客户端调用 - 这假设客户端1-4将获得通知,对吗?
2)如何处理?
3)它是SignalR本身或负载均衡器的功能吗?
4)在组级别发送消息时,仅将消息传递到与该特定服务器上的组关联的客户端应用程序,还是将消息转发给该组的所有客户端?
有没有人对此有任何想法?
谢谢,JB
我有一个 .Net C# WPF 应用程序。我正在尝试将滚动日志添加到应用程序中。在 Asp.Net 应用程序中,我们之前使用过 Serilog 包。
Serilog 是否适用于 .Net 桌面(非 asp.net)应用程序?我用谷歌搜索了一下,发现有一些与此相关的问题,但尚不清楚它们是否真正得到解决。
我的 Serilog Logger 的初始化如下所示:
string logsDirectory = Path.Combine(Environment.CurrentDirectory, "logs");
// Configure Serilog pipeline
Log.Logger = new LoggerConfiguration()
.MinimumLevel.Debug()
.WriteTo.RollingFile(Path.Combine(logsDirectory, "log-{Date}.txt"))
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
我收到“RollingLog()”的以下编译错误。
错误 CS1061“LoggerSinkConfiguration”不包含“RollingFile”的定义,并且找不到接受“LoggerSinkConfiguration”类型的第一个参数的扩展方法“RollingFile”(您是否缺少 using 指令或程序集引用?)
如何将 git 与 WPF 一起使用?
我很难找出将非标准格式字符串转换为 DateTime 对象的正确方法。
考虑以下字符串:
2019 年 11 月 25 日星期一 14:07:13
我正在尝试使用以下带有自定义格式的代码片段进行转换:
CultureInfo provider = CultureInfo.InvariantCulture;
var sInstallDate = "Mon Nov 25 14:07:13 2019";
DateTime.TryParseExact(sInstallDate, "0:ddd MMM d h:mm:ss tt yyyy", provider, DateTimeStyles.None, out parsedDate);
Run Code Online (Sandbox Code Playgroud)
我使用的格式不起作用,它会引发异常。我如何完成这个转换?
c# ×5
wpf ×4
.net ×3
xaml ×3
.net-core ×2
signalr ×2
signalr-hub ×2
apache-kafka ×1
asp.net-core ×1
combobox ×1
git ×1
git-clone ×1
implicit ×1
moq ×1
powershell ×1
scala ×1
serilog ×1
ssh ×1