【发布时间】:2014-07-07 11:45:17
【问题描述】:
我在 C# 中使用 jabber.net 库创建/注册新用户时遇到了困难。我正在使用 ejabberd 作为服务器。这是我的代码:
private void btnCreateAccount_Click(object sender, EventArgs e)
{
IQ iq1 = new IQ(jabberClient1.Document);
iq1.ID = "reg1";
iq1.Type = IQType.set;
iq1.InnerXml = "<query xmlns='jabber:iq:register'></query>";
jabberClient1.Tracker.BeginIQ(iq1, new jabber.connection.IqCB(on_create_user), null);
IQ iq = new IQ(jabberClient1.Document);
iq.ID = "reg2";
iq.Type = IQType.set;
iq.InnerXml = "<query xmlns='jabber:iq:register'><username>hax0r</username><password>god</password></query>";
jabberClient1.Tracker.BeginIQ(iq, new jabber.connection.IqCB(on_create_user), null);
}
private void on_create_user(object sender, IQ iq, object data)
{
Error err = iq.Error;
if (err != null)
Console.WriteLine("Error " + err.Condition + " on querying user " + data);
}
当我运行上面的代码时,C# 会抛出一个错误:
异常:抛出:“对象引用未设置为 对象。” (System.NullReferenceException) A System.NullReferenceException 被抛出:“对象引用未设置为 一个对象的实例。”
我做错了什么?非常感谢任何帮助。
我仍然对如何在 C# 中使用 jabber.net 创建新用户感到困惑。 我做了以下但还没有成功:
JabberClient jc = new jabber.client.JabberClient(this.components);
jc.AutoReconnect = 3F;
jc.AutoStartCompression = true;
jc.AutoStartTLS = true;
jc.InvokeControl = this;
jc.KeepAlive = 30F;
jc.LocalCertificate = null;
jc.Password = "username";
jc.User = "password";
jc.Server = "example.com";
jc.Register(new JID(jc.User, jc.Server, null));
非常感谢任何提示。
【问题讨论】:
-
如果没有堆栈跟踪,该异常将毫无用处