C# C、 Craft.Net引发JSON.Net异常。未能发射

C# C、 Craft.Net引发JSON.Net异常。未能发射,c#,json.net,minecraft,C#,Json.net,Minecraft,我开始研制改装的雷管发射器。当我将用户名和密码传递给Craft.Nets Session.DoLogin时,我不断遇到此错误 private void bLaunch_Click(object sender, EventArgs e) { string sessionID = Session.DoLogin(lblUser.Text, lblPass.Text).SessionId; } Newtonsoft.Json.dll中发生类型为“Newtonsoft.Json.JsonSer

我开始研制改装的雷管发射器。当我将用户名和密码传递给Craft.Nets Session.DoLogin时,我不断遇到此错误

private void bLaunch_Click(object sender, EventArgs e)
{
    string sessionID = Session.DoLogin(lblUser.Text, lblPass.Text).SessionId;
}
Newtonsoft.Json.dll中发生类型为“Newtonsoft.Json.JsonSerializationException”的未处理异常

其他信息:ISerializable类型“Craft.Net.Client.Session+MinecraftAuthenticationException”没有有效的构造函数。要正确实现ISerializable,应该存在一个接受SerializationInfo和StreamingContext参数的构造函数。路径,第1行,位置107

到底发生了什么?这与JSON有关吗?还是Craft.Net有问题

Craft.Net 1.7.x分支中的DotMinecraft.cs、PKCSKeyGenerator.cs、RuntimeInfo.cs和Session.cs都包含在该项目中。还包括来自NuGet的Json.Net

引发错误的会话代码:

var serializer = new JsonSerializer();
            try
            {
                var request = (HttpWebRequest)WebRequest.Create("https://authserver.mojang.com/authenticate");
                request.ContentType = "application/json";
                request.Method = "POST";
                var token = Guid.NewGuid().ToString();
                var blob = new AuthenticationBlob(username, password, token);
                var json = JsonConvert.SerializeObject(blob);
                var stream = request.GetRequestStream();
                using (var writer = new StreamWriter(stream))
                    writer.Write(json);
                var response = request.GetResponse();
                stream = response.GetResponseStream();
                var session = serializer.Deserialize<Session>(new JsonTextReader(new StreamReader(stream)));
                session.UserName = username;
                return session;
            }
            catch (WebException e)
            {
                var stream = e.Response.GetResponseStream();
                var json = new StreamReader(stream).ReadToEnd();
                stream.Close();
                throw JsonConvert.DeserializeObject<MinecraftAuthenticationException>(json);
            }

我想知道你得到的异常是否掩盖了真正的异常。看起来好像抛出了MinecraftAuthenticationException,但无法序列化。。。DoLogin是否发生在某个服务器上,而您正在将结果序列化回客户端?您可以将该行包装在try/catch中,并记录异常的.ToString,以查看这是否有助于查找根本问题。session.cs具有try/catch视图编辑。如何准确地记录.ToString?我以前没有任何Json或序列化方面的经验。所以很多这对我来说都是新的。当你调试代码时,它最终会被捕获吗?如果是这样,您可以检查json变量的内容以查看其中的内容吗?json{\error\:\BankedenOperationException\,\errorMessage\:\无效凭据。无效用户名或密码。\}字符串。好的,这就是我要找的。无效的用户和密码,谢谢!