问题标签 [marshalbyrefobject]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - In 和 Out 属性在 .NET 中如何工作?
我一直在尝试AppDomain
使用以下代码跨边界序列化数组:
作为猜测,在注意到其他地方的属性之后,我用[In]
和[Out]
属性标记了方法的参数,这似乎导致参数的行为就像它们通过引用传递一样。
例如:
在我添加属性之前,buffer
从方法越界返回后,变量的内容就丢失了AppDomain
。
类 ( SslStream
) 继承自该属性,MarshalByRefObject
但未标记该Serializable
属性。这是使参数按值传递的唯一方法吗?当类被序列化时,这些属性是否被.NET以某种方式识别?它们真的会导致参数通过引用传递,还是只是复制了内容?
c# - 如何测试 MarshalByRefObject 是否有效?
在 VS2010 C# 项目中,我们有一个派生自 MarshalByRefObject 的类,我们使用 Activator.GetObject 来设置它。我们正在使用这个派生类通过网络与机器通信。
有时目标机器已经打开并且能够被 ping,但它没有运行我们想要与之交谈的程序,这会导致等待 30 秒,然后出现异常。有没有办法判断我派生的 MarshalByRefObject 是否有效?
目前,try/catch 正在处理这种情况,但 30 秒的等待是不可接受的。
c# - C# .NET 远程处理最佳实践?
好的,所以我知道我对 .NET 远程处理非常陌生,就最佳实践而言,我有一个问题。首先,我已经构建了一个内部应用程序,并且有我引用的 dll 来为我处理所有数据。我希望我的应用程序的服务器版本能够利用所有这些类及其方法,并能够来回传递这些自定义对象。
我的问题是,我是否应该将 [Serializable] 应用于我想要来回传递的所有类,然后创建专门使用我的 Get、AddOrUpdate、Delete 等方法的特殊类?
现在,我的所有类中都有 Get、AddOrUpdate 和 Delete 方法,它们与我的数据库来回通信。我已经了解到我不能 MarshalByRefObject & [Serializable] 到所有这些类,否则我会遇到问题。所以,这就是为什么我认为我需要创建单独的类来执行“管理”(例如 Get、AddOrUpdate、Delete),而不是拥有属性定义和方法调用。
我认为需要做的一个例子。
然后要实际创建一个列表,我将有一个单独的类,称为 UserManagement。
任何意见是极大的赞赏!
c# - AppDomain.CreateInstanceAndUnwrap 在网站中不起作用
我有一个非常简单的类 CompiledFunction (MarshalByRefObject) - 我尝试在这样的新域中创建它的实例
这在控制台应用程序中工作正常,但在 ASP .NET MVC 应用程序中我得到以下异常 - 任何人都可以提供任何建议,说明为什么这在 Web 应用程序中不起作用?我传递的 T 参数是 System.Decimal
c# - 如何将不可序列化的对象作为参数发送到代理方法。MarshalByRefObject 包装器?
我目前正在修改插件架构,以便它利用 AppDomains。我的插件与我在网上找到的许多示例之间的主要区别在于,不是插件运行并将其结果发送回主应用程序,而是我的主应用程序是向插件发送信息的一个。
就目前而言,我在单独的 AppDomain 中创建了加载程序的实例。然后它会执行所有正常初始化,例如加载插件程序集。至此,我然后使用加载器的代理来调用将数据从主应用程序发送到新 AppDomain 的方法。
当我尝试调用具有不可序列化的参数类型且不是从 MarshalByRefObject 派生的方法时,就会出现我的问题。
由于这些类型来自 3rd 方代码,并且插件希望接收它们,因此我似乎找不到这样做的方法。在找到这个问题(如何用像 C# 这样的良好但多继承截断语言解决“必须是 MarshalByRefObject”?)后,我正在考虑创建某种包装器。我的缺点是我根本无法找到一种方法来制作一个不修改第 3 方代码的方法。
这是我的问题的一个例子:
任何帮助将不胜感激。
vb.net - 从 vb.net 访问 JavaScript 对象
我正在开发一个与(第三方提供的)网络应用程序交互的 vb.net 应用程序,以提供额外的功能(例如删除菜单项、从页面中提取信息等)。该网络应用程序完全由 javascript 驱动,但托管在 asp.net 中,并且仅与 Internet Explorer 一起使用。
我正在尝试从 javascript 对象中读取属性并执行它的一些功能。通过获取脚本所在的 iframe 的 mshtml.HTMLDocument 并使用以下代码,我设法获取了 javascript 对象:
jsObject 作为 {System.__ComObject} 存在,我可以使用它来执行它的任何功能或读取它的属性,如下所示:
这很好用。但是,当我离开带有 jsObject 的页面/框架并返回到它时,当再次从框架中获取 javascript 对象时(即执行以下行),相同的代码会引发异常:
例外:未找到成员。(来自 HRESULT 的异常:0x80020003 (DISP_E_MEMBERNOTFOUND))
如果我停止调试并重新启动,它会再次工作(直到我离开页面等)。就我的应用而言,我不确定发生了什么导致 javascript 对象消失。我假设这是由于我的应用程序持有对 COM 对象的引用,我需要以某种方式释放它(特别是因为它有 MarshalByRefObject 的基本类型 - 这很有意义,因为它在应用程序域之间传递)。
为什么会这样?有没有更好的方法来访问 javascript 对象,它的属性和函数?
prism - 跨 AppDomain 事件问题
我在 .Net 的 POS 中使用以下帮助程序类来获取对单独 AppDomain 中硬件的引用(绕过一些限制要求<NetFx40_LegacySecurityPolicy enabled="true"/>
当 POS 扫描仪扫描数据时,我有一个基本类要处理。在该课程中,我有一个要在扫描数据时触发的事件。这是一个片段:
请注意,PosHardware 抽象类继承MarshalByRefObject
并标记[Serializable]
在我的主 AppDomain 中,我尝试像这样使用事件:
当它遇到尝试将 lambda 添加到 DataScanned 事件的行时,我收到此错误:
无法加载文件或程序集“MyAssemlyName,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。
这必须与尝试在 AppDomain 之间进行通信有关。不太确定该怎么做。我是否需要在用于 Pos for .Net 的单独 AppDomain 中注册“MyAssemblyName”?
我使用棱镜,所以一些模块在运行时加载(在我的输出目录的子文件夹中)......包括我使用上面最后一个代码片段的那个(Scanner = PosHelper.GetHardware ....)
webcam - 带远程处理的 C# 网络摄像头
我的项目是关于远程处理的,我想向它添加一个网络摄像头组件。在这里:我的解决方案中有 3 个项目...客户端、服务器、Remote.dll。在 Remote.dll 中是一个通用类,它具有在服务器机器上工作的方法。当我从客户端调用这些方法时,它在服务器端执行。所以现在我的问题是我将网络摄像头的代码放在 remote.dll 中,它有一个名为“video_NewFrame”的事件,每次网络摄像头捕捉到图像时它都会起作用。但是我无法从客户端访问图像,因为当代码下降到此事件时,它会无限执行,并且客户端中的计时器也无法正常工作。我试图将图像分配给我的全局变量,但是每当代码进入客户端并再次进入 Remote.dll 时,我的变量为空...如何从客户端同时获取捕获的图像?这是我的代码:
//和我的客户端...
c# - Boolean members having true value by default in .NET remoting
I am using .NET Remoting. I have a class which has some pubilc boolean members and set them to false at the time of declaration itself. This class inherits from MarshalByRefObject class.
When I access this class object in the client app, all these boolean members are true. How is this happening ?