在客户端运行c#代码或使Web会话交互?

时间:2016-09-29 20:52:26

标签: c# asp.net web-services iis-6 windows-server-2008

我在c#上创建了一个用于签名PDF的应用程序。它完全适用于我的visual studio web项目,但是当我在我的测试服务器上发布它时,它会抛出这个Error

在这种情况下,我试图执行在服务器上签署pdf的代码,并且错误发生在该行上:

System.Security.Cryptography.Pkcs.SignedCms.ComputeSignature()

应该在你的桌面上抛出一个窗口,询问你的证书(读一张智能卡),然后就像这样询问你的PIN Windows Security Window但我确信这是不可能的,因为它意味着服务器必须能够与客户端的桌面进行交互

好的,既然我已经解释了我所面临的所有环境,这里是我迄今为止尝试过的解决方案:

1)尝试纠正上面的服务器错误:我进入了服务器IIS>应用程序池> MyPage>高级设置>流程模型>加载用户配置文件并选择了True而不是False( Didn' t工作

2)仍在尝试纠正我去过计算机管理的服务器错误>服务和应用程序>服务并打开服务"交互式服务检测" (仍然无法正常工作,即使我在客户端计算机上执行此操作也无法正常工作

3)最后,我猜这是不可能在服务器上运行代码,因为上面的错误行是Windows安全的本机调用所以我想:如果我尝试从中运行代码怎么办?客户端?。就像c#applet等价物一样,嗯......有两种方法可以做到这一点:ActiveX(旧技术)和Silverlight(更新)。问题是我不能在chrome上创建一个简单的Silverlight程序,它在firefox和IE上运行但是如果不在chrome上工作则完全是浪费,所以我的最后一个选择是让它运行一个ActiveX,互联网上几乎没有关于那个

的有用信息

如果有人可以告诉我该怎么做,要么纠正错误,要么让我的程序从客户端运行,我会非常感激

1 个答案:

答案 0 :(得分:0)

您无法从Web客户端调用系统的api,因为这会破坏沙箱。如果你必须使用该系统调用,请在将处理弹出窗口的服务器上创建一个包装器,尽管这将是一个非常" hacky"解。如果我必须使用所谓的本机系统调用,你应该问我为什么要使用Web客户端接口。