····很急的问题:command.Parameters.Add( parameter );里的add方法既不是私有方法,也不是静态方法。为什么就在remoting 里调用不了 报错:权限被拒绝: 无法远程调用非公共或静态方法rt 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我做的是remoting 。在调用远程对象的时候,传递一些参数(SqlParameter 数组)。remoting 里面有一个函数:public SqlCommand BuildQueryCommand(string storedProcName, SqlParameter[] parameters) { try { if(myCn.State==ConnectionState.Closed) myCn.Open(); SqlCommand command = new SqlCommand( storedProcName, myCn ); command.CommandType = CommandType.StoredProcedure; foreach (SqlParameter parameter in parameters) { command.Parameters.Add( parameter ); } return command; } catch(Exception ex) { throw new Exception(ex.Message+"数据库操作失败~(由BuildQueryCommand引发!)\n"); } finally { myCn.Close(); } } 一调用就报错:权限被拒绝: 无法远程调用非公共或静态方法 可我查了下资料Parameters.Add( parameter ); 并非静态方法或私有方法如果我把这句话:command.Parameters.Add( parameter ); 屏蔽掉,就不会报错了。很奇怪! 如果我把这句话:command.Parameters.Add( parameter ); 屏蔽掉,就不会报错了。那你把这句话封装到服务端内部,不要在接口中体现出来。 public SqlCommand BuildQueryCommand(string storedProcName, SqlParameter[] parameters) 这个函数本来就是封闭在服务端的,并没有在接口中定义command.Parameters.Add( parameter ); 更是函数内部的一个调用 just because Sql* objects are derived from System.MarshalByRefObject, it doesn't mean you should do remoting on these objectshttp://groups-beta.google.com/group/microsoft.public.dotnet.framework.remoting/msg/8ad8814cc897945f?hl=en http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpguide/html/cpconbuildingremotabletype.asp saucer(思归) 已经说了,SqlParameter不能远程传送 好像微软网上有个教程培训上说,凡是从System.MarshalByRefObject继承的类,都是可以被远程化的这是不是微软设计时候的一个问题呢?有什么别的解决方法吗?To saucer(思归)顺便来这领分吧。虽然分对你来说没什么意思了不过还是来吧^_^ To solve this, you will need to pass your query to the server in some form other than a SqlCommand. 对于这一句,您采取的是什么方法呢? To saucer(思归)http://community.csdn.net/Expert/topic/4023/4023517.xml?temp=.7932093请领分 Oracle11g在使用TransactionScope报错提示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。” 编译生成的exe,总是同步生成一个同名的.manifest文件,有用吗? winform 触发器 控件z顺序改变的事件是什么 C#调用VC的dll,CString如何处理? 在线等,谁能帮我改下连接SQL的问题 求救!关于SmtpMail发送MailMessage对象出现死循环并且CPU爆满。 搞 WinForm 的朋友可以看看 .net环境配置问题? linq语句问题 sharpziplib压缩问题 关于产生随机数出现重复的问题
在调用远程对象的时候,传递一些参数(SqlParameter 数组)。
remoting 里面有一个函数:public SqlCommand BuildQueryCommand(string storedProcName, SqlParameter[] parameters)
{
try
{
if(myCn.State==ConnectionState.Closed)
myCn.Open();
SqlCommand command = new SqlCommand( storedProcName, myCn );
command.CommandType = CommandType.StoredProcedure; foreach (SqlParameter parameter in parameters)
{
command.Parameters.Add( parameter );
}
return command;
}
catch(Exception ex)
{
throw new Exception(ex.Message+"数据库操作失败~(由BuildQueryCommand引发!)\n"); }
finally
{
myCn.Close();
}
} 一调用就报错:权限被拒绝: 无法远程调用非公共或静态方法
可我查了下资料
Parameters.Add( parameter ); 并非静态方法或私有方法如果我把这句话:command.Parameters.Add( parameter );
屏蔽掉,就不会报错了。很奇怪!
屏蔽掉,就不会报错了。
那你把这句话封装到服务端内部,不要在接口中体现出来。
这个函数本来就是封闭在服务端的,并没有在接口中定义
command.Parameters.Add( parameter );
更是函数内部的一个调用
顺便来这领分吧。虽然分对你来说没什么意思了
不过还是来吧^_^
other than a SqlCommand. 对于这一句,您采取的是什么方法呢?