【问题标题】:Run c# code on client side or make a web session interactive?在客户端运行 c# 代码或使 Web 会话交互?
【发布时间】:2016-09-29 20:52:26
【问题描述】:

我正在 c# 上创建一个用于签署 PDF 的应用程序。它在我的 Visual Studio Web 项目上完美运行,但是当我在我的测试服务器上发布它时,它会抛出这个 Error

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

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

它应该会在您的桌面上抛出一个窗口,询问您的证书(读取智能卡),然后像这样询问您的 PIN Windows Security Window 但我有预感这是不可能的,因为这意味着服务器必须有可能与客户端的桌面交互

好的,现在我已经解释了我所面临的所有环境,以下是我迄今为止尝试过的解决方案:

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

2) 仍在尝试更正服务器错误我转到计算机管理>服务和应用程序>服务并打开服务“交互式服务检测”(即使我这样做了仍然无法正常工作并且无法正常工作在客户端计算机上相同

3)最后,我猜不可能在服务器上运行代码,因为上面的错误行是 Windows 安全性的本机调用,所以我想:如果我尝试直接从客户端运行代码怎么办?就像一个 c# applet 等价物或其他东西,嗯......有两种方法可以做到这一点:ActiveX(旧技术)和 Silverlight(较新)。问题是我不能让一个简单的 Silverlight 程序在 chrome 上启动,它可以在 firefox 和 IE 上运行,但如果不能在 chrome 上运行完全是浪费,所以我的最后一个选择是让它与 ActiveX 一起运行,并且互联网上几乎没有关于此的有用信息

如果有人能告诉我该怎么做,或者纠正错误或者让我的程序从客户端运行,我将不胜感激

【问题讨论】:

  • 听起来您要求现代浏览器不支持的功能,因为它们违反了浏览器的沙盒原则(浏览器中的代码不应该能够与外部用户的系统交互严格禁止的路径)。你有什么理由不能只在 js 中实现一个模式?
  • 我不能,因为我不知道“computeSignature()”方法是做什么的,而且内部代码对我来说是不可见的,因为它是加密安全库的一部分。如果我可以在 JS 中做一个模态,我早就做了(请重新阅读问题,我刚刚编辑它
  • 您好,当您提到错误时,您永远不会在您的问题中添加图片。使用代码 sn-p。是建议还是有人会否决您的问题。

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


【解决方案1】:

您不能从 Web 客户端调用系统的 api,因为这会破坏沙盒。如果您必须使用该系统调用,请在将处理弹出窗口的服务器上创建一个包装器,尽管这将是一个非常“hacky”的解决方案。如果我必须使用所说的本机系统调用,你真的应该问我为什么要尝试使用 Web 客户端界面。

【讨论】:

    猜你喜欢
    • 2020-06-29
    • 2012-09-21
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    相关资源
    最近更新 更多