2016-03-28 18 views
0

İngilizcem için özür dileriz.Azure Mobile Services İşlenmeyen bir özel durum oluştu. Hata: Komut dosyalarınızdan biri hizmetin yanıt vermemesine neden oldu.

IoT hub kullanarak AMQP iletilerini cihaza göndermesi gereken bir node js betiğim var. Bu senaryoyu masmavi gripten aldım. İşte bu örnek. Yerel olarak çalışıyor ve benim cihaz emülatörü üzerindeki mesajları görmek

console.log("creating the client"); 

var Client = require('azure-iothub').Client; 
console.log("client has been created"); 

var Message = require('azure-iot-common').Message; 
console.log("message has been created"); 


var connectionString = "HostName=id**.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=***; 
console.log(connectionString); 
var targetDevice = 'devicesergey'; 

var client = Client.fromConnectionString(connectionString); 

client.open(function (err) { 
    if (err) { 
     console.error('Could not connect: ' + err.message); 
    } 
    else { 
     console.log('Client connected'); 

     var data = JSON.stringify({ text : 'foo' }); 
     var message = new Message(data); 
     console.log("json message is created") 
     console.log('Sending message: ' + message.getData()); 
     client.send(targetDevice, message, printResultFor('send')); 
     console.log("message has been sent");    
    } 
}); 

function printResultFor(op) { 
    return function printResult(err, res) { 
    if (err) { 
     console.log(op + ' error: ' + err.toString()); 
    } else { 
     console.log(op + ' status: ' + res.constructor.name); 
    } 
    }; 
} 

: Burada

Here is this sample

bu birine dayalı benim senaryom vardır.

An unhandled exception occurred. Error: One of your scripts caused the service to become unresponsive and the service was restarted. This is commonly caused by a script executing an infinite loop or a long, blocking operation. The service was restarted after the script continuously executed for longer than 5000 milliseconds. at process.Server._registerUncaughtExceptionListenerAndCreateHttpServer._onUncaughtException (D:\home\site\wwwroot\node_modules\azure-mobile-services\runtime\server.js:218:17) at process.EventEmitter.emit (events.js:126:20)

Ve bazen bu IIS error kesinlikle biliyorum bu çizgi bu işlevi gerçekleşir görüyoruz: Ben Azure Mobile Services API koymak için denemek ve çalıştırmayı denediğinizde Ama günlükleri bu mesajı görmeniz müşteri .open (function .... Sadece client.open() 'i terk etmeyi ve bu işlevden bir mesaj göndermeyi denedim. Fakat bu durumda "client bağlı değil" görüyorum.

Github hakkında bu şey hakkında Bana burada sormamı tavsiye ettiler.Birisi bu sorunu nasıl çözeceğini biliyordur (script veya Azure ile) Çok çok iyi olurdum!

Teşekkür ederiz!

cevap

0

Mobil Servis Özel API başarıyla sorunu yeniden

"JavaScript arka uç mobil hizmet ile Work" resmi belge bölümünü Overview of custom APIs bakın express.js kütüphanenin işlevselliği açığa bir script . Komut dosyanızın, aşağıdaki kodun gövde bloğu olarak sarılmamış olduğunu ve istemciye tarayıcıya yanıt göndermediğini tahmin ediyorum. Mobil Servis Özel API fazla ayrıntı için

exports.get = function(request, response) { 
    // The body block 
    .... 
    response.send(200, "<response-body>"); 
} 

, https://msdn.microsoft.com/library/azure/dn280974.aspx bakınız.


Güncelleme:

Ben aşağıda kodunuzu değiştirdi. enter image description here

Ve testini kolaylaştırmak amacıyla , ben o zaman tarayıcı ile api linki https://<mobile-service-name>.azure-mobile.net/api/test erişebilir, aşağıdaki gibi API izni değişti. enter image description here

+0

Teşekkür ederiz! Ancak Azure MS'mde tamamen ayarlarım var. İspatlar: http://prntscr.com/alx0jf http://prntscr.com/alx0vd – Sergey

+0

@Sergey Sorun değil. Başka bir endişe var mı? –

+0

Elbette) Bu sorunu atmaya hala devam edemiyorum – Sergey

0

Sadece yeni Azure MS'deki komut dosyasını çalıştırmayı denedim ve bu isteksizce oldu. Adım adım eylemlerimi yazacağım, belki yanlış bir şey görebilirsiniz, çünkü NodeJS'de pek iyi değilim.

  1. Yeni bir API "dev" Add new SQL Veritabanı
  2. ile yeni Azure MS ekleyin. Erişim - tüm noktalar için herkes.İşte kaynak kodu:

    exports.get = function(request, response) { 
        console.log("creating the client"); 
    
        var Client = require('azure-iothub').Client; 
        console.log("client has been created"); 
    
        var Message = require('azure-iot-common').Message; 
        console.log("message has been created"); 
    
        var connectionString = "HostName=i***.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey***"; 
        console.log(connectionString); 
        var targetDevice = 'devicesergey'; 
    
        var client = Client.fromConnectionString(connectionString); 
    
        client.open(function (err) { 
        if (err) { 
         console.error('Could not connect: ' + err.message); 
        } 
        else { 
         console.log('Client connected'); 
    
         var data = JSON.stringify({ text : 'foo' }); 
         var message = new Message(data); 
         console.log("json message is created") 
         console.log('Sending message: ' + message.getData()); 
         client.send(targetDevice, message, printResultFor('send')); 
         console.log("message has been sent");       } 
        }); 
        response(200, "Hello, world!"); 
    }; 
    
    function printResultFor(op) { 
        return function printResult(err, res) { 
        if (err) { 
         console.log(op + ' error: ' + err.toString()); 
        } else { 
         console.log(op + ' status: ' + res.constructor.name); 
        } 
        }; 
    } 
    

Ben oluşur bu şeyleri "hayır lacivert-iothub" ve çalıştırmaya çalışırsanız "hayır masmavi-ortak Iot", yani bu UÖM'yi eklemek için git kullanmak gerekir .

  1. Ben Azure MS git erişimini kullanarak benim yerel dir bu depoyu klonlamak https://id.scm.azure-mobile.net/id .git
  2. "API" klasörü girin ve ekleyin UÖMlerle: sonra npm install

  3. Ben, bu eylemin ardından

  4. üzerine, "Push", "değişiklikleri kaydet" "Commit" "Yeniden tara" perfom s ı "mobile-services.net/api/dev ** http://id" yoluna göre benim programı çalıştırmak ve hatayı "500,1013" ve günlükleri bu mesajları (id bağlıdır) bakınız o şey görmüyorum:

An unhandled exception occurred. Error: One of your scripts caused the service to become unresponsive and the service was restarted. This is commonly caused by a script executing an infinite loop or a long, blocking operation. The service was restarted after the script continuously executed for longer than 5000 milliseconds. at process.Server._registerUncaughtExceptionListenerAndCreateHttpServer._onUncaughtException (D:\home\site\wwwroot\node_modules\azure-mobile-services\runtime\server.js:218:17) at process.EventEmitter.emit (events.js:126:20)

ben yanlış

GÜNCELLEME ne yapıyorum farkında olamaz: Ben UÖM'lerini yüklemek için Kudu konsolunu kullanmayı denedik ve birçok hata verir. Doğru şekilde çözdüm, düğüm j'leri ve npm'yi güncellemem gerekiyor. Ama bunu nasıl yapacağımı bilmiyorum ve bir çözüm bulmayı başaramadım. İşte kayıtlar: enter image description here İtibarsızlığım var, bu yüzden geçmiş günlük komut dosyalarına izin verilmiyor.

Bu önlemleri yapmaya çalıştık ama yardımcı olmuyor:

at the root of the repo, you'll find a .deployment file that has:

command = ..\ZumoDeploy.cmd Change it to

command = deploy.cmd And create a deploy.cmd next to it containing:

set NPM_JS_PATH=%ProgramFiles(x86)%\npm\1.4.9\node_modules\npm\bin\npm-cli.js ..\ZumoDeploy.cmd Commit both files and push.

kafam karıştı. Bu nasıl mümkün olaiblir? Azure Mobile hizmetleri azure-iot-hub npm kurulumuna izin vermiyor). Bu sorunla ne yapabilirim?

Update2: Peter Pan - MSFT, gerekli UÖM'yi yüklemek için Kudu DebucConsole kullanmak için bana tavsiye etti. Ama yapmaya çalıştığımda hatalar görüyorum.

Bu sorunu github'daki "npm" komutuna ilettim, Azure'un kullanıldığı npm sürümünün tamamen desteklenmediğini söylüyorlar. htt ps: //github.com/npm/npm/issues/12210#event-615573997

Update3 (2016/04/12) Ben farklı bir şekilde bu sorunu çözdük. Bir bağlantı noktasını dinleyen kendi düğüm JS komutumu oluşturdum, GET params (deviceId ve message) ve D2C mesajlarını yolla. Maalesef, Azure sorununu hâlâ alamıyorum.

UPDATE4 Peter Pan bana başka bir nodejs ve npm sürümünün nasıl kullanıldığını bildirir. Şimdi gerekli NPM modüllerini başarıyla kurdum. Ancak şimdi Azure Mobile Script API'leri çalışmıyor, tarayıcımda almaya çalıştığım herhangi bir komut dosyasında {"code": 404, "error": "Error: Not Found"} yazıyor.

Belki de bu şeyleri yapmaya çalıştığımda bir şey sildim.

+0

Herhangi bir fikir, çocuklar? – Sergey

İlgili konular