小编kud*_*ger的帖子

类型 'string[]' 不是受支持的原始类型或有效的实体类型。- 如何反序列化 json 字符串?

我有以下 json

 "PayloadData": {
      "CustomFields": ['test','test2'],
      "SampleNumber":"123"
     }
Run Code Online (Sandbox Code Playgroud)

我正在使用下面的代码来反序列化 json。

   Message message = JsonConvert.DeserializeObject<Message>(payloadData);
Run Code Online (Sandbox Code Playgroud)

这是我在Message课堂上的财产

    /// <summary>
    /// Gets or sets CustomFields
    /// </summary>
    [Required]
    [DataMember(Name = "CustomFields")]
    public List<string> CustomFields{ get; set; }
Run Code Online (Sandbox Code Playgroud)

但是,我得到以下错误。

“无法映射属性 'Message.CustomFields',因为它的类型是 'string[]',它不是受支持的原始类型或有效的实体类型。要么显式映射此属性,要么使用 '[NotMapped ]' 属性或通过在 'OnModelCreating' 中使用 'EntityTypeBuilder.Ignore'。”

c# json.net deserialization

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

缺少"ASP.NET核心Web应用程序(.NET Framework)"模板

我正在尝试开发ASP.NET Core应用程序.我尝试按照博客来理解.net核心和.net框架之间的引用是如何工作的,但我在模板对话框中找不到ASP.NET核心Web应用程序(.NET Framework),如下所示

在此输入图像描述

我试图交叉检查相关问题,但他们也在他们的问题中附带截图的ASP.NET Core Web Application(.NET Framework).

.net .net-framework-version .net-core asp.net-core

4
推荐指数
2
解决办法
4060
查看次数

如何在不支持“PrivateObject”的.Net Core应用程序中对私有方法进行单元测试

我的应用程序是一个.NET Core应用程序。

我有一个public如下所示的方法,它有两个私有方法。

   public bool CallService(JObject requestJsonObj, out Status status)
   {
        bool provisioningSuccess = false;
        var preProcessSuccess = PreProcessing(requestJsonObj,out Status status);
        var postProcessSuccess = PostProcessing(requestJsonObj,out Status status);

        if(preProcessSuccess && postProcessSuccess)
        {
              status = Status.ProvisionSuccess;
              provisioningSuccess = true;
        }
        return provisioningSuccess;
   }
Run Code Online (Sandbox Code Playgroud)

这是状态和私人课程

   public enum Status
   {
       [Description("User/Pwd not valid")]
       CredentialInvalid = 111,
       [Description("Provision is success")]
       ProvisionSuccess = 112,
   }

    private PreProcessing(JObject JosnObj, 
        out Status status)
    {
           using (var client = new HttpClient())
           {
                var request = …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing privateobject.invoke .net-core

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

运行 cmdlet Get-Module -ListAvailable 时未列出 FailoverClusters 模块

我尝试了下面的命令

    Get-Module -ListAvailable
Run Code Online (Sandbox Code Playgroud)

但它没有在列表中向我显示“故障转移集群”

从哪里可以下载这个模块?我需要安装任何 SDK 吗?注意:我不想安装 Azure SDK。还有其他办法吗?

更新 我正在使用本地 Windows 10 远程连接到 Azure 虚拟机 (Windows Server 2012 R2)。我确实想使用本地 Windows 10 计算机上的 powershell 管理所有配置。

powershell failovercluster

3
推荐指数
1
解决办法
9630
查看次数

AppSettings无法通过构造函数注入解析

我的配置appsettings.json如下:

{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
  "Default": "Warning"
}
},
 "GatewaySettings": {
 "DBName": "StorageDb.sqlite",
 "DBSize": "100"    
 }
}   
Run Code Online (Sandbox Code Playgroud)

这是表示配置数据的类

 public class GatewaySettings
 {
    public string DBName { get; set; }
    public string DBSize { get; set; }
 }
Run Code Online (Sandbox Code Playgroud)

配置服务如下:

  services.AddSingleton(Configuration.GetSection("GatewaySettings").Get<GatewaySettings>());
Run Code Online (Sandbox Code Playgroud)

但我收到这个错误:

值不能为空.参数名称:implementationInstance'

码:

  public class SqlRepository
  {
        private readonly GatewaySettings _myConfiguration;

        public SqlRepository(GatewaySettings settings)
        {
              _myConfiguration = settings;
        }
  }
Run Code Online (Sandbox Code Playgroud)

依赖注入代码:

var settings = new IOTGatewaySettings();
builder.Register(c => new SqlRepository(settings))
Run Code Online (Sandbox Code Playgroud)

背景

我将ASPNET CORE应用程序作为Windows服务托管,而.NET Framework是4.6.1

注意:此处出现类似问题但未提供解决方案.System.ArgumentNullException:Value不能为null,参数名称:implementationInstance

c# dependency-injection appsettings asp.net-core

3
推荐指数
1
解决办法
757
查看次数

无法加载文件或程序集'System.Data.SQLite,Version = 1.0.109.0 - 为什么在引用1.0.109.1时搜索版本1.0.109.0

我创建了新的ASP.NET Core Web Application和使用ASP.NET Core 2.1过的跨平台框架.

接下来,我添加了System.Data.SQLite.Core使用Nuget manager.它是x86和x64的官方SQLite数据库引擎以及ADO.NET提供程序.

我的主要方法

    public static void Main(string[] args)
    {
        CreateWebHostBuilder(args).Build().Run();
        SQLiteConnection con = new SQLiteConnection("abc");
    }
Run Code Online (Sandbox Code Playgroud)

当我运行该应用程序时,它正在尝试搜索 1.0.109.0而不是已安装的1.0.109.1版本.

所以最终会像预期的那样抛出异常

System.IO.FileNotFoundException HResult = 0x80070002消息=无法加载文件或程序集'System.Data.SQLite,Version = 1.0.109.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'.该系统找不到指定的文件.来源=

那么,为什么它在寻找错误的版本?

截图供参考

在此输入图像描述

在此输入图像描述

我的解决方案平台是"任何CPU",我在x64上的x64 Windows 7上运行

奇怪

当我在课堂上做F12SQLiteConnection,它会去

在此输入图像描述

我的.csproj文件

 <Project Sdk="Microsoft.NET.Sdk.Web">

 <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
     <PlatformTarget>AnyCPU</PlatformTarget>
  </PropertyGroup>

   <ItemGroup>
      <PackageReference Include="Microsoft.AspNetCore.App" />
      <PackageReference Include="System.Data.SQLite.Core" Version="1.0.109.1" />
    </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

.net sqlite asp.net-core

3
推荐指数
1
解决办法
2351
查看次数

Quartz.SchedulerException:实例化类时出现问题 - Quartz 未按预期执行

这是我的Job,需要每一分钟执行一次,这依赖于logger

public class RefreshJob :IJob
{
    public RefreshJob(IContainerFactory containerFactory)
    {
        _logger = containerFactory.GetInstance<ILogger>();          
    }

    public Task Execute(IJobExecutionContext context)
    {
         return Task.Run(() =>
            {
                _logger.Information("Executing sample job");
                _logger.Information($"Name: {context.JobDetail.Key.Name}");
                _logger.Information($"Description: '{context.JobDetail.Description}'");
                _logger.Information($"Fire time utc: {context.FireTimeUtc:yyyy-MM-dd HH:mm:ss zzz}");
            });
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的dependency injection

   var containerFactory = new ContainerFactory();//class with GetInstance method.
  _builder.Register(c => new RefreshJob(containerFactory)).SingleInstance();
Run Code Online (Sandbox Code Playgroud)

这就是我获取scheduler参考的方式

static async Task<IScheduler> GetScheduler()
{
    var factory = new StdSchedulerFactory();
    return await factory.GetScheduler();
}
Run Code Online (Sandbox Code Playgroud)

我在start我的方法中使用它windows service

public …
Run Code Online (Sandbox Code Playgroud)

c# windows-services quartz.net

3
推荐指数
1
解决办法
6743
查看次数

当 MQTTnet 服务器未运行时,PublishAsync 不会失败

我正在使用 MQTTNet,这是一个 .NET 库,用于基于以下链接的 MQTT 通信

https://github.com/chkr1011/MQTTnet

我正在使用managed MQTT Client下面的链接

https://github.com/chkr1011/MQTTnet/wiki/ManagedClient

我有以下代码来publish发送消息MQTT server

 var messagePayload = new MqttApplicationMessageBuilder()
                                      .WithTopic("Topic1")
                                      .WithPayload(message)
                                      .WithExactlyOnceQoS()
                                      .WithRetainFlag()
                                      .Build();

    try
    {
          await mqttClient.PublishAsync(messagePayload);                  
    }
    catch (Exception ex)
    {
         //Why I am not getting exception? 
    }
Run Code Online (Sandbox Code Playgroud)

c# mqtt

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

构建成功但发布失败 - 此版本的 Microsoft.AspNetCore.All 仅与 netcoreapp2.2 目标框架兼容

我有一个具有以下属性的 Web API 项目

  • .Net核心2.2
  • 视觉工作室 2017
  • 版本:15.7.4

项目.csproj显然有以下设置

<PropertyGroup>
   <TargetFramework>netcoreapp2.2</TargetFramework>
 </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

构建是success在 Visual Studio 中进行的,但是当我尝试publish该项目时出现以下错误

此版本的 Microsoft.AspNetCore.All 仅与 netcoreapp2.2 目标框架兼容。请定位 netcoreapp2.2 或选择与 netcoreapp2.1 兼容的 Microsoft.AspNetCore.All 版本。

我正在使用Visual Studio菜单选项进行发布。我正在发布到Azure app service. 发布到File System没有显示任何错误。

我有如下 nuget

在此输入图像描述

可能是什么原因?

c# msbuild build publishing visual-studio

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

如何使用PowerShell脚本禁用笔记本电脑的触摸屏?

我的客户使用的是“ HP Elitebook 840”触摸​​屏笔记本电脑,最近我们为他们的服务启动了一个网站,不幸的是,该网站上的按钮单击事件无效。经过长时间的研发,我们意识到这是触摸屏问题,禁用它后,鼠标单击事件开始起作用。

点击此处获取更多信息:Click事件在Chrome中不起作用,但是当我们从控制台手动执行时会触发事件

由于有40多个用户使用相同的触摸屏笔记本电脑,因此我们想运行一个脚本来禁用这些笔记本电脑的触摸功能。我认为网络管理员需要运行powershell脚本才能执行此操作,但是我无法弄清楚如何编写单个脚本来禁用系统的触摸屏

我正在阅读http://www.surfaceforums.net/threads/disable-the-touch-screen-to-use-the-pen.12338/,但是由于我是PowerShell的新手,因此需要更详细的步骤。

powershell touch

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

如何对被测课程引发的事件进行单元测试?

我下面有一节课,负责根据一些商业状况提出活动。

public class EventRaiserClass : IEventRaiserClass 
{
    public event EventHandler SendEventToClient;

    public void RaiseEventForClient()
    {
        SendEventToClient?.Invoke(this, EventArgs.Empty);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的客户班

public class Client :IClient
{
    EventRaiserClass _eventRaiser;
    public Client(EventRaiserClass eventraiser)
    {
        _eventRaise = eventraise;
        _iotGwStatus.SendEventToClient += OnSendEventToClient;
    }

    private async void OnSendEventToClient(object sender, EventArgs e)
    {
        await SendEventToClient();
    }

    public async Task SendEventToClient()
    {
        //do some operation
    }
}
Run Code Online (Sandbox Code Playgroud)

EventRaiserClass 被注入到下面的类中,该类负责处理一些订单

public class ProcessRequest: IProcessRequest
{
    IEventRaiserClass _evntRaiser;
    public ProcessRequest(IEventRaiserClass evntRaiser)
    {
        _evntRaiser = evntRaiser;
    }

    public void Process(JObject json) …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing

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

在kendo调度程序控件头中呈现数据 - dateHeaderTemplate

我正在使用Kendo的Scheduler控件.我试图在每天的标题中呈现每日容量(现在硬编码30%),如下面的屏幕所示.如何用数据源中的数据替换硬编码?

在此输入图像描述

这是我用过的代码.我在下面的代码中有30%的硬编码.

<!DOCTYPE html>
<html>
<head>
<style>html { font-size: 12px; font-family: Arial, Helvetica, sans-serif; }</style>
<title></title>
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.common-material.min.css" />
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.material.min.css" />
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.dataviz.min.css" />
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.dataviz.material.min.css" />
<link rel="stylesheet" href="http://cdn.kendostatic.com/2015.1.429/styles/kendo.default.mobile.min.css" />
Run Code Online (Sandbox Code Playgroud)

<script src="Scripts/jquery.min.js"></script>
<script src="Scripts/kendo.web.min.js"></script>
<script>
    $(function () {
        $('#scheduler').kendoScheduler({
            date: new Date("2013/09/02"),
            dateHeaderTemplate: kendo.template("<u>#=kendo.toString(date, 'dd/M')#</u> - (30%)"),               
        });
    });
</script>
</head>
<body>
    <div id="scheduler"></div>
/body>
Run Code Online (Sandbox Code Playgroud)

现在,我将从API获得"百分比",并希望设置为datasource,并且从数据源我想将其渲染为标题

来自JavaScript的当前数据源设置代码

var datasource = new kendo.data.SchedulerDataSource({
      data:Model.recordCollection // setting data
});
scheduler.setDataSource(datasource);
Run Code Online (Sandbox Code Playgroud)

但是这个数据源与日历事件有关,这不包含日常容量.那么如何设置来自不同数据源的日常容量数据呢?

根据答案,我正在编辑这个问题

var actualDC = ["30","20","10","50","70","60","40"]; …

kendo-ui kendo-scheduler

0
推荐指数
1
解决办法
1299
查看次数