0

パラメータとして2つの日時を取るノード/エクスプレスを使用して書かれたかなり基本的なREST呼び出しがあります(http://localhost:3000/schedules/'2012-06-28T16:00:00'/'2012-06-28T19: 00:00') ノード実行可能ファイルに対して (Windows と Mac で) 直接テストを実行すると、ローカルでは問題なく動作しますが、git 経由で Azure にデプロイすると、悪名高い黄色い画面が表示されます。

Azureからのデバッグログは空です(ノードのconsole.logsに到達しない)ので、ノードexeにルーティングされる前にiisnodeのどこかでエラーが発生していると推測しています。次の形式 (http://localhost:3000/schedules/2012-06-28/2012-06-29) を使用すると、呼び出しは正常に機能します。もう少しテストするために iisnode をインストールしようとしていましたが、深く掘り下げる前に、他の誰かがこの問題に遭遇したかどうか疑問に思っていました.

コードの一部を次に示します。

ルート

app.param('startdate',
function(req, res, next, startdate) {
    req.startdate = startdate;
    next();
});

app.param('enddate',
function(req, res, next, enddate) {
    req.enddate = enddate;
    next();
});

app.get('/schedules/:startdate/:enddate',scheduleController.getSchedulesByStartDateAndEndDate);

スケジュールコントローラー

exports.getSchedulesByStartDateAndEndDate = function(req, res){
    console.log('getSchedulesByStartDateAndEndDate');
    console.log('StartDate'+req.params.startdate);
    console.log('EndDate'+req.params.enddate);
    ScheduleProvider.getSchedulesByStartDateAndEndDate(req.params.startdate,     req.params.enddate,function(schedules){
        res.send(schedules);
    });
};

スケジュールプロバイダー

ScheduleProvider.prototype.getSchedulesByStartDateAndEndDate =     function(startdate,enddate,callback){
console.log(startdate);
console.log(enddate);
var stDate = startdate;
var endDate = enddate;
if (stDate !== undefined) {
    var startDate = new Date(unescape(stDate.toString()).replace(/'/gi, ""));
    endDate = new Date(endDate === undefined ? startDate: unescape(endDate.toString()).replace(/'/gi, ""));
    var sttimes = getTimes(startDate);
    var endtimes = getTimes(endDate);
    console.log(startDate);
    console.log(endDate);
    console.log(sttimes[0]);
    console.log(sttimes[1]);
    console.log(endtimes[0]);
    console.log(endtimes[1]);

    Schedule.find({
        $or: [
        {
            'StartDate': {
                $gte: sttimes[0],
                $lt: endtimes[1]
            }
        },
        {
            'EndDate': {
                $gt: sttimes[0],
                $lte: endtimes[1]
            }
        }
        ]
    }, function(err, schedules){
    callback(schedules);
}).sort('StartDate', 'ascending');
}
};

私はマングースを使用して呼び出しを行っていますが、プロバイダーまたはコントローラーのコードに到達しているとは思いません。紺碧が渡された日付を好まず、例外をスローしているようです。

4

1 に答える 1

0

ローカルで実行する場合、Node.js を直接使用してアプリケーションをホストします。Windows Azure Web サイトで実行する場合、IIS と IISNode の両方、および Node.js を使用しています。IIS が一重引用符を処理し、Node (ローカル) が処理しないことに問題があると思われます。IIS で (IISNode を使用して) サイトをローカルで実行して、同じ問題があるかどうかを確認する必要があります。これを行う最も簡単な方法は、Windows Azure エミュレーターでサイトを実行することです。これは、ツールを使用してアプリケーションをデプロイできるためです。

于 2012-07-22T00:47:35.120 に答える