问题标签 [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.

0 投票
2 回答
2359 浏览

c# - In 和 Out 属性在 .NET 中如何工作?

我一直在尝试AppDomain使用以下代码跨边界序列化数组:

作为猜测,在注意到其他地方的属性之后,我用[In][Out]属性标记了方法的参数,这似乎导致参数的行为就像它们通过引用传递一样。

例如:

在我添加属性之前,buffer从方法越界返回后,变量的内容就丢失了AppDomain

类 ( SslStream) 继承自该属性,MarshalByRefObject但未标记该Serializable属性。这是使参数按值传递的唯一方法吗?当类被序列化时,这些属性是否被.NET以某种方式识别?它们真的会导致参数通过引用传递,还是只是复制了内容?

0 投票
1 回答
570 浏览

c# - 如何测试 MarshalByRefObject 是否有效?

在 VS2010 C# 项目中,我们有一个派生自 MarshalByRefObject 的类,我们使用 Activator.GetObject 来设置它。我们正在使用这个派生类通过网络与机器通信。

有时目标机器已经打开并且能够被 ping,但它没有运行我们想要与之交谈的程序,这会导致等待 30 秒,然后出现异常。有没有办法判断我派生的 MarshalByRefObject 是否有效?

目前,try/catch 正在处理这种情况,但 30 秒的等待是不可接受的。

0 投票
1 回答
1722 浏览

c# - C# .NET 远程处理最佳实践?

好的,所以我知道我对 .NET 远程处理非常陌生,就最佳实践而言,我有一个问题。首先,我已经构建了一个内部应用程序,并且有我引用的 dll 来为我处理所有数据。我希望我的应用程序的服务器版本能够利用所有这些类及其方法,并能够来回传递这些自定义对象。

我的问题是,我是否应该将 [Serializable] 应用于我想要来回传递的所有类,然后创建专门使用我的 Get、AddOrUpdate、Delete 等方法的特殊类?

现在,我的所有类中都有 Get、AddOrUpdate 和 Delete 方法,它们与我的数据库来回通信。我已经了解到我不能 MarshalByRefObject & [Serializable] 到所有这些类,否则我会遇到问题。所以,这就是为什么我认为我需要创建单独的类来执行“管理”(例如 Get、AddOrUpdate、Delete),而不是拥有属性定义和方法调用。

我认为需要做的一个例子。

然后要实际创建一个列表,我将有一个单独的类,称为 UserManagement。

任何意见是极大的赞赏!

0 投票
2 回答
3240 浏览

c# - AppDomain.CreateInstanceAndUnwrap 在网站中不起作用

我有一个非常简单的类 CompiledFunction (MarshalByRefObject) - 我尝试在这样的新域中创建它的实例

这在控制台应用程序中工作正常,但在 ASP .NET MVC 应用程序中我得到以下异常 - 任何人都可以提供任何建议,说明为什么这在 Web 应用程序中不起作用?我传递的 T 参数是 System.Decimal

0 投票
2 回答
1906 浏览

c# - 如何将不可序列化的对象作为参数发送到代理方法。MarshalByRefObject 包装器?

我目前正在修改插件架构,以便它利用 AppDomains。我的插件与我在网上找到的许多示例之间的主要区别在于,不是插件运行并将其结果发送回主应用程序,而是我的主应用程序是向插件发送信息的一个。

就目前而言,我在单独的 AppDomain 中创建了加载程序的实例。然后它会执行所有正常初始化,例如加载插件程序集。至此,我然后使用加载器的代理来调用将数据从主应用程序发送到新 AppDomain 的方法。

当我尝试调用具有不可序列化的参数类型且不是从 MarshalByRefObject 派生的方法时,就会出现我的问题。

由于这些类型来自 3rd 方代码,并且插件希望接收它们,因此我似乎找不到这样做的方法。在找到这个问题(如何用像 C# 这样的良好但多继承截断语言解决“必须是 MarshalByRefObject”?)后,我正在考虑创建某种包装器。我的缺点是我根本无法找到一种方法来制作一个不修改第 3 方代码的方法。

这是我的问题的一个例子:

任何帮助将不胜感激。

0 投票
1 回答
2635 浏览

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 对象,它的属性和函数?

0 投票
1 回答
408 浏览

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 ....)

0 投票
3 回答
440 浏览

.net - 为什么 System.Drawing.Drawing2D.Matrix 派生自 MarshalByRefObject?

为什么从轻量级结构Matrix派生出重量级类?MarshalByRefObject

0 投票
0 回答
404 浏览

webcam - 带远程处理的 C# 网络摄像头

我的项目是关于远程处理的,我想向它添加一个网络摄像头组件。在这里:我的解决方案中有 3 个项目...客户端、服务器、Remote.dll。在 Remote.dll 中是一个通用类,它具有在服务器机器上工作的方法。当我从客户端调用这些方法时,它在服务器端执行。所以现在我的问题是我将网络摄像头的代码放在 remote.dll 中,它有一个名为“video_NewFrame”的事件,每次网络摄像头捕捉到图像时它都会起作用。但是我无法从客户端访问图像,因为当代码下降到此事件时,它会无限执行,并且客户端中的计时器也无法正常工作。我试图将图像分配给我的全局变量,但是每当代码进入客户端并再次进入 Remote.dll 时,我的变量为空...如何从客户端同时获取捕获的图像?这是我的代码:

//和我的客户端...

0 投票
0 回答
86 浏览

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 ?