如何在.Net Core调用NodeJs
2024-10-16 03:19:12
概述
目前.net core正处于飞速的成长期,虽然前途光明不容置疑,但是就生态而言还是比不上其他一些语种的大环境,那如果能够在.net core下调用其他语种的库加以利用那就能更好的发挥我们手头的.net core 而不至于因为库短缺而尴尬
NodeJs出生名门,依靠其异步IO广泛用于I/O密集的场景,而且世界上的javascript开发者也是多如牛毛!自然Nodejs的盛起也给他们的代码生活带来了前所未有的体验,同样JS的库也是五花八门一度占据了github的排行榜。
如果.net core能利用 nodejs的庞大生态库是不是很nice?
Microsoft.AspNetCore.NodeServices库
其实微软爸爸提供了Microsoft.AspNetCore.NodeServices这个库,专门用来调用nodejs服务
要使用NodeJs服务,首先需要Microsoft.AspNetCore.NodeServices在项目文件中包含包的引用。您可以使用dotnet add package Microsoft.AspNetCore.NodeServices命令执行此操作。
然后,您需要将Node Services中间件利用ConfigureServices()添加到请求管道。
现在,您可以利用INodeServices在应用程序中获取实例。并利用它调用在Node环境中运行的JavaScript的API。您可以使用FromServicesattribute在您的action方法中获取`INodeServices'的实例
实例
这里我贴一个实例供参考
新建aspnet core站点
利用dotnet command建立站点
dotnet new mvc
添加nuget包
dotnet add package Microsoft.AspNetCore.NodeServices
建立node环境,此处示例用于扫描wifi环境
在站点根目录下利用npm建立环境
npm init -y
npm install node-wifi --save-dev
建立nodejs的程序文件 index.js
var wifi = require("node-wifi"); module.exports = function(callback) {
wifi.init({
iface: null // network interface, choose a random wifi interface if set to null
});
// Scan networks
wifi.scan(
).then(function (networks) { callback(null,networks)});
};
设置js文件为始终复制

注入配置
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddNodeServices(); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
}
在控制器-Action处调用
public async Task<IActionResult> Wifi([FromServices] INodeServices nodeServices)
{
var result=await nodeServices.InvokeAsync<dynamic>("Index.js");
return new JsonResult(result);
}
返回情况

最新文章
- div实现自适应高度的textarea,实现angular双向绑定
- js获取页面url
- treeview所有节点递归解法(转+说明)或者说递归的实际应用
- swiper笔记
- 因开启SELinux导致httpd报403
- SharpGL学习笔记(十四) 材质:十二个材质球
- 导购效果跟踪: SPM
- document.location的属性
- Scala 的 Web 框架 Lift 开始 3.0 版本开发
- cura-engine学习(3)
- java+反射+多线程+生产者消费者模式+读取xml(SAX)入数据库mysql-【费元星Q9715234】
- 基于javaMail的邮件发送--excel作为附件
- tensorflow中命名空间、变量命名的问题
- Python 练习:三级菜单选择城市(二)
- java.net.SocketException四大异常解决方案
- 解决PuppetDB Failed to submit &#39;replace facts&#39;问题
- Structs复习 开始 第一个helloworld项目
- java如何编写下载功能
- Android学习总结——DrawerLayout 侧滑栏点击事件穿透
- 线程同步之ManualResetEvent类的用法