缺少参数的构造函数错误
我正在尝试使我的客户端订阅服务器上发生的事件. 我的界面看起来像这样: public delegate void RemoteEventHandler(object sender, ClientEventArgs args); [Serializable] public class ClientEventArgs : EventArgs { public ClientEventArgs() { } public ClientEventArgs(Client _client) { MyClient = _client; } public Client MyClient { get; set; } } public interface IMonitor { event RemoteEventHandler RemoteEvent; } 我的服务器类看起来像这样: public class C
22 2024-04-26
编程技术问答社区
在.Net Remoting中,如果你不在配置文件中指定一个远程服务或在代码中注册一个远程服务,会使用什么默认设置?
上下文 我已经继承了一个.NET远程应用程序,该应用程序在试图在服务器上注册共享对象时挂着问题.此注册发生在服务器启动后的任意时间段内,并在共享iLease对象上调用"注册". 在遵循代码路径的过程中,我试图弄清RemotingServices.Marshal和RemotingServices.RegisterWellKnownSericeType的调用在哪里存储他们的信息.我的上一个问题'>'>'>'>'> s回答使我了解应用程序指定将此信息存储在.exe配置文件中或使用RemotingConfiguration.RegisterWellKnownClientType呼叫的服务,作为确认的在这里. 问题 我们的应用程序既不使用配置文件,也不使用RegisterWellKnownClientType注册远程服务,而是成功使用.NET远程远程服务.我无法从.NET的开源参考代码或文章中弄清楚我查看的"默认"服务用于.NET远程的文章.那么,有人知道.NET远程服务的
2 2024-04-25
编程技术问答社区
MarshalByRefObject在被赞助时也变得 "在服务器断开连接"。
我正在编写一个支持MOD的游戏,为了安全起见,我将MOD与游戏引擎的单独AppDomain进行了打击(因此我可以将MOD的功能与引擎分开限制).但是,脚本域中的对象保持了引擎的参考,以使垃圾收集得太早,我得到了这样的例外: 对象 '/30B08873_4929_48A5_989C_E8E5CEBC601F/LHEJBSSQ8D8D8QSGSGVUULHBKQBO_615.REM' 服务器上已断开或不存在. 在服务器端我正在创建这样的对象(使用// Take in a "script reference" which is basically just the name of a type in the scripting domain public Reference Dereference(ScriptReference reference) where T : MarshalByRefObject { // Create a remote instance o
14 2024-04-25
编程技术问答社区
EasyHook,.NET Remoting在客户端和服务器之间共享接口?
IPC客户端和IPC服务器调用共享的远程接口(class ostals osalshalbyrefobject)进行通信,而不必将接口类放入注入应用程序中?例如,如果我将接口类放在注入目标过程中的注入库项目中,则我的注入应用程序无法参考该接口. 编辑:我已经回答了下面的问题. 解决方案 如 Easyhook forse 66751 ,似乎不可能在客户端(启动注入DLL的过程)和服务器(注射 Process 启动的过程中,都无法获得远程接口的实例运行注射的DLL). 我是什么意思? 好吧,在 processMonitor 示例://easyhook.codeplex.com/sourcecontrol/changeset/view/66751#612833" rel =" nofollow noreferrer"> FileMonInterface ,嵌入在 Program.cs ,for filemon 和,在自己的文件中,for >)放置在注入组装中. Fil
38 2024-04-23
编程技术问答社区
将位图图像转换为字符串格式,以便通过网络(LAN)发送,反之亦然。
我基本上是在Visual Studio 2010 .NET 4.0中开发一个软件,其中我在其中捕获PC的屏幕截图并将其通过网络发送到另一个. 由于我无法直接发送位图,因此我必须将其转换为字符串. 我做了很多互联网搜索,但找不到任何解决方案. :( 我在stackoverflow本身上找到了此代码. 但是它不起作用.我试图打印字符串(从图像转换),但是程序的行为不存在. 我使用了messagebox.show(string); 但甚至没有一个味精弹出! 有人可以帮忙吗?我卡住了! 预先感谢:)(y) bitmapString = null; // Conversion from image to string MemoryStream memoryStream = new MemoryStream(); bmpScreenshot.Save(memoryStream, ImageFormat.Png); byte[] bitmapBytes = memoryStre
10 2024-04-23
编程技术问答社区
可序列化和MarshalByRefObject之间的区别
我与 [serializable] 和:MarshalbyRefobject .net erototing .如果我使用[可序列化]属性,那么所有方法均完全在呼叫者域中执行,这意味着不同的呼叫者应在其自己的域上具有不同的方法的副本,并且一个呼叫者进行的任何更改都不应反思其他方法.但是当相同时我在程序中实施的事情,我没有得到所需的结果. 解决方案 Serializable属性用于签署一个对象,当对象通过远程请求时,它将被序列化为字节数组,将字节数组作为字节数组从源到目标转移,然后对象的另一个实例是从重新构造的在目的地环境中生活和呼吸的字节阵列(AppDomain或应用程序).在该对象上执行的操作不会反映到源.要更新对象,您必须再次前往源并发送您更改的对象(当然是新的字节数组).就像下载文件并修改文件一样,您的更改不会反映到您从中下载文件的服务器. var user = server.GetUser("edokan"); user.Alias = "edokan2"; var
10 2024-04-20
编程技术问答社区
COM互操作,RPC服务器在c#中不可用
我正在使用com Interop,我正在从Interop dll实例化com类对象 因此,几次对象已成功实例化,并毫无问题地进行远程过程调用,但有时会引发异常,例如RPC服务器是不可避免的. 我正在使用的COM组件是用VB编写的,我在C#中使用该组件. 所以,任何人都可以告诉我这个问题的可能原因(RPC服务器不可用)和解决此问题的解决方案. 我现在对这个问题感到无助. 所以,请前进,如果您可以帮助我 解决方案 审查了我的com实施方法后,我发现了错误.我正在使用静态类来初始化com实例,并且在静态构造函数中进行了初始化内容.因此,每次申请会话一次进行初始化.在这种情况下,当COM实例被损坏或处置时,然后呼叫COM方法引发异常(RPC服务器不可用). 因此,我使用以下方法克服了问题 try { m_COMObject.SomeMethod(); } Exception(exception exception) { Disp
8 2024-04-20
编程技术问答社区
.Net Remoting。指明使用哪个本地接口来连接一个服务器
我们有一台服务器,我们与.net远程连接. 服务器位于两个网络上,客户端在两个网络上.客户端和服务器只有一个共同的网络: 使用Discovery,我们找到服务器的IP(在这种情况下:10.10.10.110).我们创建TcpChannel,然后连接到服务器. 服务器接收呼叫,但是当它试图将一些信息发送到客户端接收器时.我们有一个例外,说我们试图将数据发送到无法实现的IP(10.12.10.100). 因此,服务器正确地宣布了他的地址,但是我们如何向客户端指示使用特定IP的网络接口? 一些代码: 客户端,初始化: IDictionary tcpChannelConfiguration = new Hashtable(); string instanceName = "RemotingClient" + Utils.GenerateRandomString(5); tcpChannelConfiguration["name"] = instanceName
6 2024-04-19
编程技术问答社区
获取对象的AppDomain
有什么方法可以确定在哪个AppDomain中创建的对象或对象Handle实例? 解决方案 来自另一个应用程序域的对象是透明的代理.可以获取真正的代理并访问包含域ID的私有字段: public static int GetObjectAppDomain(object proxy) { RealProxy rp = RemotingServices.GetRealProxy(proxy); int id = (int)rp.GetType().GetField("_domainID", BindingFlags.Instance|BindingFlags.NonPublic).GetValue(rp); return id; } 如果不知道可能的应用域列表,则在这里获取所有应用域的列表. 其他解决方案 如果您的对象使用(例如)从另一个应用程序序列化到当前AppDomain的对象"旅行",则本质上是在您当前的AppDomain中"创建"的.源应
40 2024-04-18
编程技术问答社区
.Net Remoting与WCF的比较
我想知道我可以从.NET远程和WCF中做同样的事情,那么为什么WCF比.NET远程更喜欢WCF.我可以在哪里选择(或在哪种情况下).NET远程或WCF? 解决方案 .net远程应用程序可以使用HTTP,TCP和SMTP协议,而 WCF 也可以使用所有这些协议,也可以使用名为Pipes和MSMQ. 您可以在这里找到最佳答案:从.net远程到Windows Communication Foundation 结论 如您所见,从.NET远程迁移到WCF不是一项任务 你必须害怕.对于大多数应用程序,一个简单的三步 流程可以将您的应用程序带入新平台.在多数情况下, 您只需要与您的接口合同标记 [servicecontract]和[protive contract],您的数据结构与 [Datacontract]和[DataMember],也许可以更改您的某些部分 激活模型是基于会话而不是客户激活的激活模型 对象. 如果您决定要利用功能 Windows Communica
4 2024-04-17
编程技术问答社区
WCF与.Net Remoting
根据本文,WCF带有命名Pipes是IPC的最佳选择,并且它比.net远程快25%. 我有以下代码,将WCF与命名管与.net远程进行比较: [ServiceContract] internal interface IRemote { [OperationContract] string Hello(string name); } [ServiceBehavior] internal class Remote : MarshalByRefObject, IRemote { public string Hello(string name) { return string.Format("Hello, {0}!", name); } } class Program { private const int Iterations = 5000; static void Main(string[] args)
12 2024-04-17
编程技术问答社区
当使用定义在一个强命名的程序集中的接口的旧版本创建一个客户端激活对象时,出现System.InvalidCastException
我对.net远程,版本控制和创建客户端激活的对象有一个查询. 这是场景: 有2个接口,位于自己的组装"共享类型"中:Iserver和iAccount. Iserver包含返回字符串的方法" getStatus"和返回IACCOUNT类型的" CreateAccount".这已注册到GAC中为v1.0.0.0. 服务器应用程序引用共享类型和实现Iserver和IACCOUNT,并带有具体类,服务器和帐户.这些是元帅对象.服务器应用程序将服务器类称为单例对象. 客户端应用程序引用共享类型,并通过iServer接口成功连接到远方的服务器对象.在这里,我可以成功地致电GetStatus和createAccount(返回客户端激活的对象).到目前为止都可以. 现在,我将共享类型的版本递增到v2.0.0.0并注册到GAC中,删除了旧的v1.0.0.0版本. 服务器应用程序是针对此版本构建的,但客户端不是. 现在,当我运行客户端应用程序时,它将按预期向Syst
18 2024-04-13
编程技术问答社区
我可以用投掷的方式删除空的接球吗?
我希望这很简单.我从事大型代码库,总体质量很好,但有时您会得到其中的一些: try { // Calls a .NET remoting method. } catch { throw; } 请注意,最终没有逻辑,并且除了我上面提供的内容外,捕获量没有指定任何例外或做任何其他事情.但是,我知道在例外细节中,捕捉和重新投入可以改变呼叫堆栈.我不确定的是,这种行为是否特别是由于.NET远程调用. 删除此尝试捕捉是否安全?据我所知,这是,但是我认为我会先检查任何奇怪的行为. 据我所知, 解决方案 catch (Exception ex) { throw ex }重置堆栈跟踪.只是catch { throw; }不. 因此,如果您不执行错误的其他逻辑,例如记录,我不知道没有任何理由不删除该捕获量. 其他解决方案 复发您已经显示出它不应更改呼叫堆栈,除非有一些非常特别的远程异常. (我知道有一些特殊方面,但我认为它们在这里发挥作用.)这是 dos 的
28 2024-04-12
编程技术问答社区
在ASP.NET预编译期间出现类型解析错误
在我们的.NET 3.5 Web应用程序的ASP.NET预编译期间,在类型的初始化器中执行各种初始化.当环境配置不正确时,类型初始化器之一会引发自定义.但是,当我们定制异常时,这是Aspnet_compiler.exe告诉我们的: [exec] error ASPRUNTIME: Type is not resolved for member 'App.Project.CustomException,App.Project, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. [exec] [exec] [SerializationException]: Type is not resolved for member 'App.Project.CustomException,App.Project, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. [exec]
14 2024-03-09
编程技术问答社区
对象引用没有设置为构建网站上的一个对象实例
我有一个刚刚用作远程服务器的网站,并在其web.config文件中具有远程配置. 除此Web.config文件外,它仅包含这些文件: dataconfiguration.config Enterpriselibrary.config log.config weblity.publishproj bin文件夹 - 通过远程 具有从该项目提供的DLL 构建网站时,我
8 2024-03-08
编程技术问答社区
当一个对象派生自MarshalByRefObject并且也被标记为[Serializable]时会发生什么?
我正在研究使用AppDomains的第一个项目,我想知道当对象派生到元帅的情况下会发生什么,并且也标记为[serializable]? 例如: [Serializable] public class DummyClass: MarshalByRefObject { } 解决方案 它通过参考将其编排,但仍可以序列化其他用例以进行序列化.有一个实现细节,值得注意的是:用于远程序列化的格式使用SurrogateSelector,它将为任何序列化而产生代理,因此序列化仍然会导致通过参考导致杂乱.其他序列化用途不会具有SurrogateSelector,因此不会有效果.
10 2024-03-02
编程技术问答社区
我如何在App Domains之间沟通一个事件?
我有两个应用域,一个父母创建子域.在子域中,有一个MarshalByRef对象,并与使用.net远程通信.作为应用程序功能的一部分,在父域中运行的对象调用远程对象的包装器: public class ScanningTask : Task { private class Loader : MarshalByRef { public void Load(IEnumerable paths) { ... } public event EventHandler OnLoad; } public void RunTask() { var domain = AppDomain.CreateDomain("LoadDomain"); var loader = (Loader)domai
10 2024-03-02
编程技术问答社区
多平台编译。System.Configuration.ConfigurationManager.GetSection在.NetCore上抛出错误。
背景: 我们正在将.NET应用程序迁移到.NET核心. 作为一种策略,我们希望将现有功能保持完整的完整框架,同时将应用程序的一部分迁移到.NET核心.完整的应用程序将支持网络远程和REST API的服务,而.NET核心应用程序仅支持REST API服务. 我们已决定保留相同的代码库,以在多个平台上(NetCoreApp2.1和Net472)上保留整个应用程序和支持汇编. 有一个应用程序配置文件.大多数组件取决于该文件中存储的信息.因此,我们想保留两个平台的单个配置文件. 我使用system.configuration.configurationmanager软件包访问配置信息. 问题: configurationManager.getSection(String)在.NET核心平台上抛出异常,而在Net472上工作正常. 错误消息:配置系统无法初始化---> System.Configuration.configurationErrorSexception:未识别的配置部分S
在.Net Remoting中,".NET Remoting框架 "具体是什么或在哪里?
tl; dr: 我正在尝试查找.NET远程框架运行的位置(例如,服务名称或过程名称).另外,来源将是惊人的. 上下文: 我正在维护使用.NET远程使用的遗留代码,以允许使用两个过程之间的连接信息,并且长期以来一直存在随机断开和崩溃的问题,显然是由于那些远程对象的计时.我们已经看到的问题在这篇文章,特别是位: 我的问题是使用元帅注册远程对象.随着时间的流逝,远程对象将消失供客户消耗,即不再在远程对象上. 我们过去使用的"修复"方法是该帖子中提到的:返回一个无效的租赁管理器,该管理器将对象永远活着,以避免随机不需要的超时. 几年前,该代码因在Linux上引起问题而被删除 - 基本上,每个连接在有用后剩下的每个连接都会消耗插座,并且由于插座是Linux上的文件,我们会用完文件描述符.正如我们认为最受影响的超时问题的功能所贬低的,我们恢复了正常的超时,一切都很好. 最近,最近对Windows或其他某些环境变化的补丁似乎导致不需要的超时问题在我们的某些机器
26 2024-01-07
编程技术问答社区
在调用 RemoteConfiguration.Configure(configFile)后修改设置?
我的应用程序调用RemotingConfiguration.Configure()以设置.NET远程设置.但是,由于每次运行应用程序时,我都需要通道元素的portname属性是不同的,所以我必须以编程方式配置此特定设置. 听起来很简单(而且可能是 - 但是我整天都在搜索Google). 到目前为止,我有: RemotingConfiguration.Configure(Program.ConfigFilePath, false); IChannel[] regChans = ChannelServices.RegisteredChannels; IpcChannel ipcChannel = (IpcChannel)ChannelServices.GetChannel(regChans[0].ChannelName); 调试器向我展示ipcChannel._serverChannel._prop将是我需要添加一个条目(例如["portName"] = unique
32 2024-01-07
编程技术问答社区