RTXSApi 使用
问题:
s出现错误
检索 COM 类工厂中 CLSID 为 {79210E58-99EB-45D0-8890-763EFEAA143F} 的组件时失败,原因是出现以下错误: 80040154。
原因是:
可能遇到的问题:
1.调用com+的时候,对COM 组件的调用返回了错误 HRESULT E_FAIL
原因:调用rtx组件实现登陆的时候,需要对NTFS文件夹进行权限配置
解决办法:
1. 在控制面板--->管理工具--->服务 中,开启Distributed Transaction Coordinator 服务。
2. 打开控制面板--->管理工具--->组件服务--->选择计算机--->我的电脑--->右击属性--->选择MSDTC--->选择安全配置勾选事务管理器通信中的允许出站、允许入站和不要求进行验证。
如下图所示:
重启IIS
实例文档:
RTX服务端提供了2个接口,RTXServerApi和RTXSAPILib。RTXServerApi主要用于和以前的老RTX版本结合,兼容RTX旧版本接口,现在不开发了,不建议使用。RTXSAPILib实现了RTXServerApi的所有接口,并附带开发了一些新功能,所以基于RTX的开发,建议使用。
1. 在服务端发送消息
这个实例我们采用RTXSAPILib,如果是asp.net的开发,需要导入Interop.RTXCAPILib.dll,Interop.RTXClient.dll,Interop.RTXSAPILib.dll这3个dll,在安装目录下可以找到。使用这个对象之前需要设定它的ip和端口,设置好后,可以利用消息提醒方法给任何一个指定的人发短信。具体代码如下:
RTXSAPILib.RTXSAPIRootObj RootObj;//声明一个根对象
public RtxUtil()
{
string RTXConnString = ConfigurationSettings.AppSettings["RTXconnString"].ToString();
string[] RTXarg = RTXConnString.Split(';');
RootObj = new RTXSAPIRootObj();//创建根对象
RootObj.ServerIP = ((string[])(RTXarg[0].Split('=')))[1]; //设置服务器IP
RootObj.ServerPort = short.Parse(((string[])(RTXarg[1].Split('=')))[1]); //设置服务器端口
}
public void sendMSG(string txtReceivers, string txtMsgTitle, int txtTime, string txtMsgContent)
{
try
{
RootObj.SendNotify(txtReceivers, txtMsgTitle, txtTime, txtMsgContent); //发送信息
}
catch (Exception xe)
{
}
}
2.组织机构同步
这个功能我们采用RTXServerApi这个对象,需要使用的分对象有RTXObjectClass,RTXCollectionClass,需要使用的方法有Call2,同样在使用时需要制定根目录对象的IP和端口。其实组织机构同步原理是用集合对象去读取XML里面的数据,所以你得把组织机构先生成一个xml,然后以DATA的方式放到集合对象中,最后调用CALL2把数据读进去放到rtx中,这样就可以了。
具体代码如下:
RTXServerApi.RTXObjectClass RTXObj = new RTXObjectClass();//创建一个业务逻辑对象
RTXServerApi.RTXCollectionClass RTXParams = new RTXCollectionClass();// 创建一个集合对象
RTXObj.Name = "USERSYNC";//业务逻辑对象名称为用户同步类别
RTXParams.Add("MODIFYMODE", 1);
RTXParams.Add("DATA", textBox1.Text);
这里textBox1.Text里的内容实际上时一个xml的所有数据。
try
{
RTXObj.Call2(enumCommand_.PRO_SYNC_TO_RTX , RTXParams);
MessageBox.Show("导入成功");
}
如果远程访问其他服务器的Rtx组件包,需要以下步骤:
1.在本服务器上安装Rtx的Sdk和服务管理器(需要里面的组件,因为找不到具体是什么组件),然后再卸载他们。
2. 在rtx服务器进行设置,如:你的服务器的IP是192.168.1.156,那么需要把这个IP设置到Rtx服务器里,让它允许你访问它的组件。From WWW.JOOZONE.COM
具体做法是:
(1)打开Rtx的安装目录下的AppConnConfig.xml,这个配置文件用于应用程序连接,(2)在文件的<IPLimit Enabled="1">下加<IP>192.168.1.156</IP>。
(3)从启Rtx服务
3.如果Rtx服务器开了防火墙,需要在网上邻居打开8006端口
4.测试,用telnet <rtx服务器IP> 8006命令,如果出现黑屏小花,说明配置成功。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
版本:2008 Beta1 (8.0.054.201)
引用:Interop.RTXCAPILib.dll
Interop.RTXClient.dll
Interop.RTXSAPILib.dll
using RTXCAPILib;
using RTXSAPILib;
using RTXClient;
本文完全按照腾讯公司提供的Demo操作
------------------------------------------------------------------
VS 2005
1.新建网站 RTX_test
功能一:单点登录
前台:
<table style="position: relative">
<tr>
<td style="width: 100px">
服务器地址:</td>
<td style="width: 100px">
<asp:TextBox ID="txtServerIP" runat="server" Style="position: relative">127.0.0.1</asp:TextBox></td>
<td style="width: 122px">
AppServer端口:</td>
<td style="width: 100px">
<asp:TextBox ID="txtAppServerPort" runat="server" Style="position: relative">8006</asp:TextBox></td>
</tr>
<tr>
<td style="width: 100px">
用户名:</td>
<td style="width: 100px">
<asp:TextBox ID="txtUserName" runat="server" Style="position: relative">wf</asp:TextBox></td>
<td style="width: 122px">
登录端口:</td>
<td style="width: 100px">
<asp:TextBox ID="txtServerPort" runat="server" Style="position: relative">8000</asp:TextBox></td>
</tr>
<tr>
<td align=center colspan="4" style="height: 26px">
<asp:Button ID="Button1" runat="server" Style="position: relative" Text="登录" OnClick="Button1_Click" /></td>
</tr>
</table>
后台:
using RTXCAPILib;
using RTXSAPILib;
using RTXClient;
protected void Button1_Click(object sender, EventArgs e)
{
//登录
RTXClient.RTXAPIClass ObjApi = new RTXAPIClass(); //创建一个客户端SDK主对象
RTXCAPILib.IRTXCRoot RTXCRoot = (RTXCAPILib.IRTXCRoot)ObjApi.GetObject("KernalRoot"); //通过主对象获取CRoot对象
try
{
string Account = txtUserName.Text; //帐号
string SessionKey = GetSessionKey(Account);//获取SessionKey
RTXCRoot.LoginSessionKey(txtServerIP.Text, Convert.ToInt16(txtServerPort.Text), Account, SessionKey); //SessionKey 登录
Response.Redirect("browinfo.aspx");
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
}
private string GetSessionKey(string Account) //服务器端代码
{
string SessionKey = "";
RTXSAPILib.RTXSAPIRootObj RootObj = new RTXSAPIRootObj(); //创建一个根对象
RTXSAPILib.RTXSAPIUserAuthObj UserAuthObj = RootObj.UserAuthObj; //创建一个用户认证对象
RootObj.ServerIP = txtServerIP.Text; //设置服务器IP
RootObj.ServerPort = Convert.ToInt16(txtAppServerPort.Text); //设置Appserver端口
try
{
SessionKey = UserAuthObj.GetSessionKey(Account); //通过用户认证对象获取SessionKey
}
catch (Exception ex)
{
Response.Write(ex.Message.ToString());
}
return SessionKey; //返回SessionKey
}
需要注意:
rtx服务端默认只允许本机通过sdk来访问,如果从其他机器利用sdk来连接服务端就会被拒绝。
解决方法如下:
在RTX服务端的安装目录下找到下面两个文件 AppConnConfig.xml,SDKProperty.xml ,里面的格式大致如下
view plaincopy to clipboardprint?
01.<?xml version="1.0"?>
02.<Property>
03.<APIClient>
04. <IPLimit Enabled="1">
05. <IP>127.0.0.1</IP>
06. </IPLimit>
07.</APIClient>
08.
09.</Property>
<?xml version="1.0"?>
<Property>
<APIClient>
<IPLimit Enabled="1">
<IP>127.0.0.1</IP>
</IPLimit>
</APIClient>
</Property>