我正在使用nancy构建P2P网络。 到目前为止一切都很好。现在我正在构建我的fingertables并希望将它们解析为使用给其他客户端。但是我收到以下错误:
Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value
我的要求:
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await client.GetAsync($"http://localhost:{port}/Successor/{id}");
var chord = await response.Content.ReadAsAsync<ChordNode>();
return chord;
}
刚刚返回:
Get["Successor/{id}", true] = async (x, ct) =>
{
return _chordNode;
};
我的班级ChordNode工作正常,直到我添加了FingerTable列表。它看起来如下:
public class ChordNode
{
public NodeInfo Info { get; set; }
public NodeInfo Successor { get; set; }
public NodeInfo Predecessor { get; set; }
public List<ChordNode> FingerTable { get; set; }
..... and other stuff thats not important.
如果我将FingerTable设为私有,它会再次起作用,但之后我不会将FingerTable
返回给其他客户端。
在StackOverflow上提问时还不错。所以任何反馈都会很好:)
答案 0 :(得分:1)
我找到了解决方案。 在我删除了所有ASYNC之后,我收到了一条更好的消息,告诉我我错误地使用了这部分。
Get["Successor/{id}", true] = async (x, ct) =>
我在方法调用中使用了我的参数x.id作为int,它没有给我任何反馈。因此,在将其解析为int之后,它解决了所有问题。
感谢所有好的反馈。