Articles of azure

在Azure上启动Nightmare.js

我使用我的本地服务器上的恶梦,它的工作原理。 我试图在MS Azure上启动这个项目。 我在日志中看不到任何错误和警告。 但是在第一次使用“梦魇”期间,代码运行会停止。 我发现Azure不支持Electron。 Nightmare.js不适用于Azure webjob 有没有可能在Azure上运行我的代码? 如果没有,请告诉我梦魇工作的地方。 UPDATE 我在Windows上使用Azure Web Apps。 我遵循@evilSnobu的build议,并在Linux上的Azure Web Apps上重新启动我的服务器。 但是它不工作。 这样我在日志中看到,它工作,而不符合Nidthmare。 之后,我在日志(balnk14 – 它的我的项目)中看到这行: 2017-08-14 09:57:45.434 ERROR – Container logs STDERR>> 2017-08-14T09:53:58.254134911Z npm info it worked if it ends with ok 2017-08-14T09:53:58.254164596Z npm info using npm@3.10.10 2017-08-14T09:53:58.254167894Z npm info using node@v6.9.3 2017-08-14T09:54:00.107284364Z npm info lifecycle blank5@1.0.0~prestart: blank5@1.0.0 […]

Node.js Azure Web App Windows 500.1001错误

我在Windows上有一个Azure Web应用程序,它运行iisnode与我的Node应用程序进行通信,并得到一个1001的子状态500错误。 似乎IIS似乎没有得到来自Node的响应。 我已经在应用程序设置下设置了NODE_ENV和PORTvariables。 为了最大限度地减less这些variables,我也将其分解到Node Hello World应用程序中。 节点拿起PORTvariables,并启动使用适当的端口,因为我知道,因为我看到std出说明应用程序启动指定的端口。 但是,当我尝试任何请求时,Node永远不会实际接收来自iisnode的请求。 我没有得到任何东西,如果我试图console.log消息,我没有看到任何exception,如果它是在事物的响应方面,我希望是这种情况。 我有其他的应用程序服务设置相同的方式,似乎工作正常。 我尝试从其中一个部署代码,并得到相同的行为。 我试图使用下面的代码进行最基本的testing var http = require('http'); // Configure our HTTP server to respond with Hello World to all requests. var server = http.createServer(function (request, response) { console.log('Getting Response'); response.writeHead(200, {"Content-Type": "text/plain"}); response.end("Hello World\n"); }); var port = process.env.PORT || '3003'; server.listen(port); // Put a […]

使用nodejs将数据从Rfid rc522发送到azureiot集线器

//THIS IS THE CODE TO READ SERIAL NUMBER AND SEND DATA TO AZURE IOT HUB var rc522=require("rc522/build/Release/rc522"); var Async = require('async'); var Protocol = require('azure-iot-device-http').Http; var Client = require('azure-iot-device').Client; var ConnectionString = require('azure-iot-device').ConnectionString; var Message = require('azure-iot-device').Message; // Enter Device Connection String: AZURE–> IOTHub –> Devices–> select Device–> Connection String. var connectionString = ''; var […]

web.config与angular万能

我想在Azure Web中运行angular色4 univeral。 我部署的代码,但我有一些麻烦与web.config(我认为是这样)。 位于dist文件夹中的server.js,所以我在web.config“dist / server.js”中设置path,但是当server.js运行时,会出现一个错误: ENOENT:没有这样的文件或目录,打开'D:\ home \ site \ wwwroot \ dist \ dist \ browser \ index.html' 如果我从path中删除“dist”,它将会是404.如果我从中删除“dist” const DIST_FOLDER = join(process.cwd(), 'dist'); in server.js 它会给我一个错误: ENOENT:没有这样的文件或目录,打开'D:\ home \ site \ wwwroot \ browser \ index.html' 或双重dist,或根本没有dist。 web.config如下所示: <?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <webSocket enabled="false" /> <handlers> <add name="iisnode" path="dist/server.js" verb="*" […]

快速有效地创buildCSV文件报告,而不会减慢node.js服务器的速度

我有一个Node.js快速API,托pipe在一个Azure应用服务上,提供来自SQL服务器数据库的数据。 一个新的要求是根据可定制的数据导出报告。 这些应该是即时生成的CSV文件。 我面临的问题是,在某些情况下,CSV文件将会非常大(可能是50万行)。 我不难创build这些文件,然后将它们上传到Blob存储,或者直接将它们提供给用户。 但是,正如你可以想象的那样,这将花费一些负载在服务器上。 这个API每分钟提供约500个Post / Get请求。 Node的单线程特性意味着当有人请求类似的CSV文件时,服务器将抓取。 我需要一些build议,而不是做什么。 我的想法是启动一个新的应用程序,在一个新的服务器上(可能是一个用ASP.NET编写的),负责创buildCSV文件。 它公开一个接收参数来创build文件的结束点,然后用文件或链接进行响应。 但是,因为它是一个单独的服务器(如果我做了类似于.NET的单独线程),它在等待响应时不会降低节点服务器的速度。 这看起来好像很多工作。 有什么简单的吗? 我对任何可以直接连接到SQL数据库并生成报告的服务开放(所以我可以把它给客户端,而不是定制的报告,我需要硬编码)。

Bot在本地工作,但对Bot服务没有反应

我有一个机器人通过VSTS持续集成。 僵尸程序正在运行一个应用程序服务计划(我最近才发现消费计划机器人作为function运行)。我在消费云中有一个工作的机器人,但它限制了我的扩展能力。 对于这个机器人,我做了一个干净的部署提示机器人 – 但试图在云中运行产生了一个对话框错误。 所以我评论了Prompt代码,并把它变成了一个echo机器人。 本地运行良好,但服务没有响应。 尝试login到Kudu控制台并运行手动npm安装,但没有帮助。 尝试手动运行僵尸程序导致错误的请求错误。 节点版本6.11.2。 文件树包括初始部署时由Bot Service提供的所有文件,包括iisnode和web.config。 这是我的app.js和package.json。 有没有其他人遇到问题与本地有效的僵尸没有响应云部署? 任何技巧,我还没有尝试过? 更新:通过Azure日志stream发现此错误,但不知道如何解决它。 错误:请求到“ https://state.botframework.com/v3/botstate/webchat/conversations/(snip) ”失败:[500] Request._callback发生内部服务器错误 var dotenv = require('dotenv'); dotenv.load(); var restify = require('restify'); var builder = require('botbuilder'); // Setup Restify Server var server = restify.createServer(); server.listen(process.env.port || process.env.PORT || 3978, function () { console.log('%s listening to %s', server.name, server.url); […]

服务工作者在React应用程序中刷新后导致空白页面

我有一个部署到Azure的Node应用程序,一个testing分支通向一个分段实例,一个master分支指向了分发部署。 我的应用程序可以在本地应用程序的所有实例上正常工作,但是生产和临时存在一个问题,如果它们已经被caching,它们将不会加载,并且在刷新之后将显示为空白,最后将在caching重置时正常工作。 每当我刷新生产页面,它只是空白。 服务人员正在运行(我可以在chrome serviceworkers-内部工具中看到它),但该页面从不加载。 生成的文件引用是正确的。 你可以看到这里发生的事情的一个例子: Live Site ,然后你也可以看到testing站点也失败了,部署了完全相同的代码: testing站点 。 ServiceWorker实现的整体是从create-react-app开箱的。 我已经花了好几个小时的时间来尝试跟踪这个bug,在反应样板和创build反应应用程序回购下的各种GitHub问题,没有一个真正除了限制页面caching之外的任何地方,我试图做与无济于事有: 的index.html <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/> <meta http-equiv="Pragma" content="no-cache"/> <meta http-equiv="Expires" content="0"/> 你可以find任何代码,你有任何代码在回收的托pipe所有这些代码的问题。 我只是用React / Node弄湿了自己的脚,所以我在墙上,并没有真正看到如何解决这个问题,而没有完全取消ServiceWorker的注册。 编辑:我完全从index.js文件中删除ServiceWorker代码,现在重新加载没有任何问题。 是否需要完成一个步骤才能让ServiceWorker正确地从caching中重新加载页面?

在MS Bot Framework机器人中获取Azure Active Directory用户的数据

我在Azure帐户上部署了一个用Node.js编写的Cortana机器人。 僵尸程序使用Cortana通道并打开“Connected Services”(所以我可以使用Azure Active Directory中的帐户login僵尸工具)。 login工作正常。 我的问题是,现在我不知道如何获得有关login的用户(例如电子邮件地址)在我的机器人的信息。 我猜我需要从会话数据中获取一些令牌,然后发送一个API请求,请求Azure获取用户的数据? Node.js有这个botauth的例子,但是运行它的指令已经过时了。

Microsoft Azure Active Directory Passport身份validation

贝娄的代码运行良好,但是当授权头来自php代码的空令牌(eg-'Authorization:bearer')时,node.js应用程序会崩溃。 我正在使用“passport-azure-ad”节点模块。 我与邮政人检查,它是validation令牌,但是当请求来自PHPcurl请求,应用程序崩溃。 其原因是,http头在“passport-azure-ad”节点模块中设置了两次。 我无法捕捉到这个错误。 router.get('/getUser', passport.authenticate('oauth-bearer', { session: false, tenantIdOrName: TENANT }), function (req, token, done) { // Send response }); 崩溃错误跟踪 – _http_outgoing.js:356抛出错误('发送后不能设置标题'); ^ 错误:发送后无法设置标题。 在\ node_modules \ passport \ lib \ middleware \ authenticate.js:156:13) PHP代码=> $headers = array ('Authorization: bearer ' . $Requestheader['id_token']); $ch = curl_init (); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true […]

使用botbuilder越区切换时,从DirectLine获取401错误

我正在研究一个新的机器人,并试图实现人工切换。 我正在使用Directline 3.0在BotFramework-WebChat客户端和托pipe在Azure Bot Service上的我的机器人之间进行通信。 我的问题是,当我的机器人尝试从用户发送消息到代理或代理到用户时,我从Directline API中收到401错误。 为了进一步解释这个问题,我们只需要讨论观察状态。 在代码中,客户消息通过中间件被拦截。 如果状态被确定为正在观看 ,则将消息消息路由到机器人和观看代理。 从bot发送给用户的消息,使用session.send('foo')发送,但工作正常,但是从bot到agent的消息发送如下: address = conversation.agent; // the commented codes makes the whole thing work… // address.useAuth = true; agentMessage = new builder.Message() .address(address) .text(message.text); bot.send(agentMessage, (err) => { console.log(err); }); 不工作,除非我添加一个useAuth标志。 我在ChatConnector.js实现中find了这个标志,它似乎决定了(正如你猜测的那样)消息在发送时是否使用授权的请求。 你可以在我的上面的代码中看到我可以自己设置这个标志,但是这是一个冒险的解决scheme,它似乎是绕过了真正的应用程序逻辑。 这整个事情感觉不对,我觉得我错过了一些东西,但我不知道如何使这些请求工作,而无需直接设置useAuth 。 以下是我的切换客户端的相关代码。 我已经从下面删除了一些代码,只关注来自客户的消息,而对话处于等待状态。 /* this middleware is used by the bot […]