C# 正在获取无效的json

C# 正在获取无效的json,c#,json,httpclient,C#,Json,Httpclient,嘿,我有个奇怪的问题,我搞不懂。基本上,我试图发出一个简单的httpClient post请求,但我一直得到一个“无效的json原语:”。我已经检查过了,它说这是有效的json,但我的应用程序声明不是这样。如有任何信息,将不胜感激 string test = "{\"CurrentUser\":null,\"Stacktrace\":\"System.UnhandledExceptionEventArgs\",\"OtherData\":null,\"UserInput\":\"\",\"Tim

嘿,我有个奇怪的问题,我搞不懂。基本上,我试图发出一个简单的httpClient post请求,但我一直得到一个“无效的json原语:”。我已经检查过了,它说这是有效的json,但我的应用程序声明不是这样。如有任何信息,将不胜感激

string test = "{\"CurrentUser\":null,\"Stacktrace\":\"System.UnhandledExceptionEventArgs\",\"OtherData\":null,\"UserInput\":\"\",\"TimeStamp\":\"2017-10-10T16:48:58.606512-04:00\"}"

 HttpContent httpContent = new StringContent(test);
 await httpClient.PostAsync("/api/logException", httpContent);
客户端的初始化方式如下:

 httpClient = new HttpClient();
 httpClient.BaseAddress = new Uri(this.serverURL);
 httpClient.Timeout = TimeSpan.FromSeconds(400);

我不是专家,但因为没有其他人响应,也许您只需要将内容类型设置为JSON

HttpContent httpContent = new StringContent(test, Encoding.UTF8, "application/json");

请参见

我不是专家,但由于没有其他人响应,也许您只需要将内容类型设置为JSON

HttpContent httpContent = new StringContent(test, Encoding.UTF8, "application/json");

请参见尝试
字符串。替换(“\”, string.Empty)
到您的json。也许这会起作用。

尝试
String.Replace(“\”, string.Empty)
到您的json。也许这会奏效。

与其自己编写JSON格式(容易出错),不如创建一个对象并将其序列化为JSON。让c#做重物搬运。首先创建一个类,如:

public class Model
{
   public string CurrentUser { get; set; } = null;
   public string Stacktrace { get; set; } = "System.UnhandledExceptionEventArgs";
   public string UserInput { get; set; } = String.Empty;
   public string OtherData { get; set; } = null;
   public string TimeStamp { get; set; } = "2017-10-10T16:48:58.606512-04:00";
}
然后初始化此类的一个对象,只需使用JavaScriptSerializer将其序列化为json:

Model md = new Model();
System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
var json = ser.Serialize(md);
结果将以json格式显示:

{"CurrentUser":null,"Stacktrace":"System.UnhandledExceptionEventArgs","UserInput":"","OtherData":null,"TimeStamp":"2017-10-10T16:48:58.606512-04:00"}

与其自己编写JSON格式(容易出错),不如创建一个对象并将其序列化为JSON。让c#做重物搬运。首先创建一个类,如:

public class Model
{
   public string CurrentUser { get; set; } = null;
   public string Stacktrace { get; set; } = "System.UnhandledExceptionEventArgs";
   public string UserInput { get; set; } = String.Empty;
   public string OtherData { get; set; } = null;
   public string TimeStamp { get; set; } = "2017-10-10T16:48:58.606512-04:00";
}
然后初始化此类的一个对象,只需使用JavaScriptSerializer将其序列化为json:

Model md = new Model();
System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
var json = ser.Serialize(md);
结果将以json格式显示:

{"CurrentUser":null,"Stacktrace":"System.UnhandledExceptionEventArgs","UserInput":"","OtherData":null,"TimeStamp":"2017-10-10T16:48:58.606512-04:00"}

嘿,谢谢你的回答。你们都是对的,我感谢你们的帮助。问题最终不是json。基本上,这个错误正在传播,并且在我认为它已经被处理之后,实际上出现了两次。因此,我认为它告诉我存在无效的json(它正在破坏的地方)实际上是它在代码的后面重复相同的错误消息


再次感谢。

嘿,谢谢你的回答。你们都是对的,我感谢你们的帮助。问题最终不是json。基本上,这个错误正在传播,并且在我认为它已经被处理之后,实际上出现了两次。因此,我认为它告诉我存在无效的json(它正在破坏的地方)实际上是它在代码的后面重复相同的错误消息


再次感谢。

我也试过了,但想法相同,但也不走运。我也试过了,但想法相同,但也不走运。您能演示一下如何初始化您的HttpClient吗?完成了,但我认为这里没有什么特别的事。我实际上可以做其他的发帖请求,但这个特定的请求似乎是问题所在。如果这有帮助的话,那就是将未处理的异常记录到一个刚刚构建并运行的数据库中,一切似乎都正常工作。我认为问题应该在您的配置中更深层的某个地方。您可以查看
/api/logException
端点吗?此外,如果您可以发布完整的异常详细信息,如错误消息和堆栈跟踪,这将非常有用。请您演示如何初始化您的HttpClient?完成,但我认为这里没有任何特殊情况。我实际上可以做其他的发帖请求,但这个特定的请求似乎是问题所在。如果这有帮助的话,那就是将未处理的异常记录到一个刚刚构建并运行的数据库中,一切似乎都正常工作。我认为问题应该在您的配置中更深层的某个地方。您可以查看
/api/logException
端点吗?此外,如果您可以发布完整的异常详细信息,如错误消息和堆栈跟踪,这将非常有用。