【问题标题】:Call c# program from javascript [closed]从javascript调用c#程序[关闭]
【发布时间】:2021-03-26 10:59:48
【问题描述】:

我需要从 javascript 调用 c#,我是 c# 新手,所以我不知道从哪里开始..

这是我的 javascript 代码:

    <script type="text/javascript">             //Default.aspx
   function runCsharp() {     
         $.ajax({
         type: "POST",
         url: '..../csharp',  //here i'm lost
         data: "",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         success: function (msg) {
             alert('it works');
         },
         error: function (e) {
             alert('something went wrong');
         }
     });
   }
</script>

【问题讨论】:

  • 除非您还在机器上安装了本地网络服务器,否则 JavaScript 不能用于访问 C# 程序(即使这样,该程序也需要在 asp.net 环境中。)。出于安全原因,浏览器不能直接在运行浏览器的机器上执行任何程序。如果可能的话,你能想象黑客等会发生的混乱吗?
  • 所以...也许重新考虑 Angular 应用程序是否真的是用于此扫描过程的最佳程序。也许桌面应用程序会更合适。
  • @ADyson or.. Electron?
  • @ADyson:你甚至不需要网络服务器,一个在 12345 上监听 localhost 套接字的桌面应用程序是来自浏览器应用程序的完美 cors 目标。
  • @CaiusJard 你可以...但是如果已经有用于扫描仪的 C# 代码(从问题来看似乎有),那么为什么不构建一个完整的 C# 应用程序呢?

标签: javascript c# localhost windows-services


【解决方案1】:

您可以创建 Windows 服务,该服务将托管简单的 Web 服务器,该服务器将处理来自 Angular 应用程序的“http”请求。
.Net 核心有一个 Kestrel 服务器可用于此目的,对于您的用例来说,这已经足够了。
不要忘记开启 CORS 政策。

【讨论】:

  • 该服务是否可以访问指纹扫描仪?
  • 我正在尝试这个解决方案,我会在我弄清楚 owin 后立即将其标记为解决方案。谢谢
  • 不知道如果我会打扰 OWIN,如果你已经有一个 C# 块可能更容易,只需将它与 Unosquare EmbedIO Web 服务器一起放入项目中并为你的 javascript 公开一个 json 端点打
  • @CaiusJard 是的,这就是我正在做的事情,我创建了监听端口 9000 的控制台应用程序,然后我将其转换为 Windows 服务
猜你喜欢
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 2014-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多