C# 在ASP.NET应用程序中托管.NET控件

C# 在ASP.NET应用程序中托管.NET控件,c#,asp.net,.net,C#,Asp.net,.net,我有一个COM控件,它封装了许多客户端功能,即使用输入设备收集信息、与不同设备集成、报告生成等。。。我想将其包装在某种.NET控件中,并将其添加到ASP.NET应用程序中。包装器将负责与位于服务器上的数据库进行对话,并且还包含一些业务逻辑。有没有人有一个好的将军,或者更好的,我应该去的具体方向?我在.NET中使用C++,COM对象是C++。p> 顺便说一句,我曾尝试创建一个windows窗体控件库并将其托管在ASP web应用程序中,但没有成功 您似乎混淆了Windows操作系统中桌面上运行的S

我有一个COM控件,它封装了许多客户端功能,即使用输入设备收集信息、与不同设备集成、报告生成等。。。我想将其包装在某种.NET控件中,并将其添加到ASP.NET应用程序中。包装器将负责与位于服务器上的数据库进行对话,并且还包含一些业务逻辑。有没有人有一个好的将军,或者更好的,我应该去的具体方向?我在.NET中使用C++,COM对象是C++。p>
顺便说一句,我曾尝试创建一个windows窗体控件库并将其托管在ASP web应用程序中,但没有成功

您似乎混淆了Windows操作系统中桌面上运行的System.Windows.Forms(WinForms)与ASP.NET中完全不同的安全环境中IIS下运行的System.Web.UI(WebForms)之间的区别。仅仅因为许多表单属性和其他属性看起来很相似,这并不意味着它们在内部工作时有任何相似之处——事实上,它们肯定没有。您需要更仔细地了解WebForms在ASP.NET中的工作方式,以开始理解为什么正如SLaks已经为您指出的那样,您试图做的事情不能以您建议的方式工作。

您可能会在网页中托管ActiveX。ActiveX是COM的,但在浏览器中托管时,活动控件所能做的事情有一些限制。开发浏览器时通常会考虑沙箱,因此在安全设置方面可能会遇到严重问题。另一个方面是跨浏览器功能。WinForms绝对是另一个世界,所以即使你找到一种方式来显示某种简单的表单,你也肯定会在混乱和繁荣之间结束

根据您在问题中所说的,我认为您最好的选择是坚持使用经典的桌面应用程序。显然,这对您来说是可行的,除了重写成本太高之外,更改应用程序的行为方式不是一个选项。将一个相当复杂的应用程序迁移到web上,与经典桌面应用程序相比,它的编程方法有着根本的不同,这与有限的资源(金钱和/或人力)是不相容的

也就是说,如果你要承担混乱和繁荣的重担,你可能想看看这些信息:


请注意,这些文章相当陈旧,无法解决表单使用的ActiveX/COM内容必须在客户端计算机上注册的问题(以及访问可能在同一网络中也可能不在同一网络中的服务器等问题)。而且您无法确定安全设置。

这不起作用。您需要从头开始在HTML和Javascript中重写它。顺便说一句,我正在使用.NET 4.0重写控件不是一个选项。在ASP.NET中使用控件也不是一个选项。对不起,你看过这个吗?