在web应用程序的客户端运行C#代码
我的服务器上有代码,运行得很好。它必须在远程站点上抓取几页才能正常工作。我知道有些用户可能想滥用我的网站,因此我希望它在客户端运行,而不是运行使用webclient和HttpRequest的代码,因此如果滥用,用户可能会将其IP列入黑名单,而不是我的服务器。如何在客户端运行此代码?我认为silverlight可能是一个解决方案,但我对此一无所知。我认为您可以选择silverlight或某种桌面应用程序在web应用程序的客户端运行C#代码,c#,asp.net,silverlight,C#,Asp.net,Silverlight,我的服务器上有代码,运行得很好。它必须在远程站点上抓取几页才能正常工作。我知道有些用户可能想滥用我的网站,因此我希望它在客户端运行,而不是运行使用webclient和HttpRequest的代码,因此如果滥用,用户可能会将其IP列入黑名单,而不是我的服务器。如何在客户端运行此代码?我认为silverlight可能是一个解决方案,但我对此一无所知。我认为您可以选择silverlight或某种桌面应用程序 除非有jquery库或其他客户端脚本语言可以做同样的事情,否则这是一个有趣的请求(没有双关语)
除非有jquery库或其他客户端脚本语言可以做同样的事情,否则这是一个有趣的请求(没有双关语)。如果您确实使用Silverlight,那么可能不需要将逻辑移植到它,而是在其中创建一个简单的代理类,接收来自服务器应用程序的请求,并将其转发给脏工作。与传入响应相同:让您的Silverlight代理将其发送回服务器应用程序 通过这种方式,您可以在某些情况下通过Silverlight代理运行服务器应用程序,在其他情况下可以自行运行(无代理)。silverlight插件应该提供一个一致的API来编程,无论它运行在哪个浏览器上 如果在web浏览器中使用代理解决方案,您甚至可以完全跳过Silverlight,使用JavaScript/AJAX调用。当然,这类东西通常充满了浏览器兼容性问题,而且肯定是一个模糊的推/拉实现,但我认为JavaScript可以访问域和URL,并且(在某些情况下使用)不局限于它起源的域和URL
如果Silverlight security妨碍了您研究其他类型的可编程(图灵完整)浏览器插件,如Java、Flash等。如果内存正常,对于Java插件,它只能通过网络与其源域通信。这种安全性对于您的爬行需求来说限制太多 是的,Silverlight是一种解决方案,它允许您在客户机上运行有限的.NET代码子集。只需谷歌搜索,就可以获得更多关于不可用内容的信息 我不知道您试图实现的场景是什么,以及是否需要实时结果,但我想缓存爬网结果可能是个好主意
如果您正在寻找,您应该能够找到一些适合您的JavaScript框架。根据对称性,您的代码滥用客户端机器不是很容易吗?特别是当您(根据需要)访问客户端计算机的文件系统时。Silverlight在“沙箱”中运行,这意味着出于安全原因对其设置了很多限制(即使在v4中,您也可以将文件保存到用户的驱动器中,但您得到的唯一信息是没有路径和FileStream实例的文件名)。您不太可能从Silverlight执行web爬网,尤其是在跨域安全的情况下。@Rory:+1非常不可能。很遗憾你没有输入这个作为答案。看起来我可以做一些我需要的事情,但我需要改变我的代码,使之不值得。答案是正确的,并且被接受,看起来我将改为写/复制粘贴到桌面应用程序。