我有这个 C# 服务,用于在每个计时器滴答声中将 api 结果转换为 Json 文件,但它在 JsonSerializerSerialize 中给出错误,“错误:方法‘Serialize’没有重载需要 1 个参数” 我该如何修复它?
我只在控制台应用程序中执行此操作并且有效,但是当我尝试在 Windows 服务中进行转换时我无法运行
using Newtonsoft.Json;
using System;
using System.IO;
using System.Net.Http;
using System.ServiceProcess;
using System.Threading;
using System.Threading.Tasks;
namespace ConsultaPainelService
{
public partial class Service1 : ServiceBase
{
Timer temp;
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
temp = new Timer(new TimerCallback(temp_Tick), null, 15000, 30000);
}
protected override void OnStop()
{
StreamWriter vWriter = new StreamWriter(@"C:\ConsultPanel\Log", true);
vWriter.WriteLine("stop: " + DateTime.Now.ToString());
vWriter.Flush();
vWriter.Close();
}
private void temp_Tick(object sender)
{
SalveAsync();
}
private async Task SalveAsync()
{
using (HttpClient client = new HttpClient())
{
try
{
string fileName = "C://ConsultPanel/Carr.json";
string rep= await client.GetStringAsync("https://10.10.10.10:1010/api/Panel/Carr");
string jsonString = JsonSerializer.Serialize(rep);
File.WriteAllText(fileName, jsonString);
}
catch (Exception ex)
{
StreamWriter vWriter = new StreamWriter(@"C:\ConsultPanel\Log", true);
vWriter.WriteLine("Error: " + DateTime.Now.ToString() + " - " + ex.Message);
vWriter.Flush();
vWriter.Close();
}
我怀疑这段代码在控制台应用程序中是否有效。事实上,我认为它甚至不会编译。我不确定您使用的是哪个版本的 Newtonsoft,但是 JsonSerializer 类上没有静态 Serialize 方法。您需要在序列化器上调用Create Method,然后向其传递TextWriter(或其他)或直接实例化JsonSerializer的实例。
也许您将其与 .NET JsonSerializer 混淆了。