Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 针对Azure CORS webservice的IIS节点下的节点http请求失败-getaddrinfo ENOTFOUND_Javascript_Node.js_Azure_Cors_Iisnode - Fatal编程技术网

Javascript 针对Azure CORS webservice的IIS节点下的节点http请求失败-getaddrinfo ENOTFOUND

Javascript 针对Azure CORS webservice的IIS节点下的节点http请求失败-getaddrinfo ENOTFOUND,javascript,node.js,azure,cors,iisnode,Javascript,Node.js,Azure,Cors,Iisnode,当纯粹在节点下运行时,一切都能正常工作,只要我尝试在IIS节点下运行,每次使用getaddrinfo上的ENOTFOUND,节点http请求都会失败。这是一个中型网站的一部分,其他所有内容都在节点和IIS节点下工作,只是对Azure CORS web服务的请求失败了。我对谷歌地图也有类似的web服务请求,在这两种环境中都能完美地工作。谷歌地图和Azure web服务调用都使用相同的共享代码来处理请求 // Simplified //================================

当纯粹在节点下运行时,一切都能正常工作,只要我尝试在IIS节点下运行,每次使用getaddrinfo上的ENOTFOUND,节点http请求都会失败。这是一个中型网站的一部分,其他所有内容都在节点和IIS节点下工作,只是对Azure CORS web服务的请求失败了。我对谷歌地图也有类似的web服务请求,在这两种环境中都能完美地工作。谷歌地图和Azure web服务调用都使用相同的共享代码来处理请求

// Simplified
//==================================
var http = require("http")

var options = {
  host: "xxx.azurewebsites.net",
  path: "/address?postcode=SL6+1PB",
  headers: {
    "SerialNo": "xxx",
    "RegKey": "xxx",
    "Company": "xxx"
  }
};

req = https.request(options, callback);
req.end();


// The Whole thing
//===========================
function getData(host, port, path, headers, data, secure) {
    return new promise(function(resolve, reject) {
            var options = {}, req;

        try {
            options.host = host;
            if(!!port) {options.port = port;}
            if(!!data) {options.method = "POST";}
            if(!!path) {options.path = path.replace(/\s+/g, "+");}
            if(!!headers) {options.headers = headers;}

            if(!!secure) {req = https.request(options, callback);}
            else {req = http.request(options, callback);}

            req.on("error", function(error) {
                rejectPromise(reject, error, "datahttp.getData");
            });

            if(!!data) {req.write((typeof(data) === "object" ? JSON.stringify(data) : data));}
            req.end();
        }
        catch(error) {
            // This error object drops the message property on stringify
            error = {method: "datahttp.getData", success: false, message: error.message};
            rejectPromise(reject, error, "datahttp.getData");
        }

        function callback(response) {
            var str = "";

            //another chunk of data has been received, so append it to `str`
            response.on("data", function(chunk) {
                str += String(chunk);
            });

            // the whole response has been received
            response.on("end", function () {
                if(response.statusCode == 200) {
                    try {
                        switch(response.headers["content-type"].split(";")[0]) {
                            case "application/xml":
                                xmlToJSN(str)
                                    .then(function(result) {
                                        resolve({method: "datahttp.getData", success: true, data: result});
                                    })
                                    .catch(function(error) {
                                        rejectPromise(reject, error, "datahttp.getData");
                                    });

                                break;

                            case "application/json":
                                resolve({method: "datahttp.getData", success: true, data: JSON.parse(str)});
                                break;

                            default:
                                resolve({method: "datahttp.getData", success: true, data: str});
                        }
                    }
                    catch(error) {
                        rejectPromise(reject, error, "datahttp.getData");
                    }
                }
                else {
                    rejectPromise(reject, {message: response.statusMessage + " (" + response.statusCode + ")"}, "datahttp.getData");
                }
            });

            response.on("error", function(error) {
                rejectPromise(reject, error, "datahttp.getData");
            });
        }

    });
}
我已经为此挣扎了几天,很明显,我没有看到一些非常明显的东西,一些帮助和一记耳光将是受欢迎的

Stack Trace
====================
Trace: { [Error: getaddrinfo ENOTFOUND daaddressing-prod-ne.azurewebsites.net/ daaddressing-prod-ne.azurewebsites.net/:80]
  code: 'ENOTFOUND',
  errno: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'daaddressing-prod-ne.azurewebsites.net/',
  host: 'daaddressing-prod-ne.azurewebsites.net/',
  port: 80 }
    at ClientRequest.<anonymous> (C:\Dev\Node\acinet_flint\server\datahttp.js:47:29)
    at emitOne (events.js:77:13)
    at ClientRequest.emit (events.js:169:7)
    at Socket.socketErrorListener (_http_client.js:269:9)
    at emitOne (events.js:77:13)
    at Socket.emit (events.js:169:7)
    at connectErrorNT (net.js:1012:8)
    at nextTickCallbackWith2Args (node.js:442:9)
    at process._tickCallback (node.js:356:17)
{ [Error: getaddrinfo ENOTFOUND daaddressing-prod-ne.azurewebsites.net/ daaddressing-prod-ne.azurewebsites.net/:80]
  code: 'ENOTFOUND',
  errno: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'daaddressing-prod-ne.azurewebsites.net/',
  host: 'daaddressing-prod-ne.azurewebsites.net/',
  port: 80,
  service: 'acinet',
  success: false,
  method: 'datahttp.getData' }
堆栈跟踪
====================
跟踪:{[Error:getaddrinfo ENOTFOUND daaddressing-prod-ne.azurewebsites.net/daaddressing prod ne.azurewebsites.net/:80]
代码:“ENOTFOUND”,
errno:'ENOTFOUND',
系统调用:“getaddrinfo”,
主机名:'daaddressing prod ne.azurewebsites.net/',
主机:“daaddressing prod ne.azurewebsites.net/”,
端口:80}
在ClientRequest。(C:\Dev\Node\acite\u flint\server\datahttp.js:47:29)
在emitOne(events.js:77:13)
在ClientRequest.emit(events.js:169:7)
位于Socket.socketErrorListener(_http_client.js:269:9)
在emitOne(events.js:77:13)
位于Socket.emit(events.js:169:7)
在connectErrorNT(net.js:1012:8)
在下一个TTickCallbackwith2args(node.js:442:9)
在进程中调用(node.js:356:17)
{[错误:getaddrinfo ENOTFOUND daaddressing-prod-ne.azurewebsites.net/daaddressing prod ne.azurewebsites.net/:80]
代码:“ENOTFOUND”,
errno:'ENOTFOUND',
系统调用:“getaddrinfo”,
主机名:'daaddressing prod ne.azurewebsites.net/',
主机:“daaddressing prod ne.azurewebsites.net/”,
港口:80,
服务:'acinet',
成功:错,
方法:'datahttp.getData'}

我们可以用堆栈跟踪来处理该错误吗?此时,daaddressing-prod-ne.azurewebsites.net/给出了一个404错误,我用您的代码片段进行了测试:
req=http.request(选项,回调)
针对您的服务器,它是
daaddressing prod ne.azurewebsites.net/address?postcode=SL6+1PB
,它在IISNode env中的Azure Web应用程序上运行良好。你能提供更多关于你的客户环境的细节吗?好的,我终于发现了问题,这是一个非常愚蠢的问题。。。使用主机字符串“daaddressing prod ne.azurewebsites.net/”在节点下工作正常,但在IIS节点下失败,只需从主机末尾删除“/”,它在两种环境下都能工作,为什么这种情况让我大吃一惊。在纯节点下,尾随斜杠似乎不起作用问题是我的配置,IIS节点配置有尾随斜杠,但在纯节点下我没有,我必须对这些值进行100次比较,但没有找到它。感谢您的帮助,我很抱歉遗漏了一些如此简单的错误,我们可以用堆栈跟踪来处理该错误吗?在这个恰当的时刻,daaddressing-prod-ne.azurewebsites.net/给出了一个404错误,我用您的代码片段测试了它:
req=http.request(选项,回调)
针对您的服务器,它是
daaddressing prod ne.azurewebsites.net/address?postcode=SL6+1PB
,它在IISNode env中的Azure Web应用程序上运行良好。你能提供更多关于你的客户环境的细节吗?好的,我终于发现了问题,这是一个非常愚蠢的问题。。。使用主机字符串“daaddressing prod ne.azurewebsites.net/”在节点下工作正常,但在IIS节点下失败,只需从主机末尾删除“/”,它在两种环境下都能工作,为什么这种情况让我大吃一惊。在纯节点下,尾随斜杠似乎不起作用问题是我的配置,IIS节点配置有尾随斜杠,但在纯节点下我没有,我必须对这些值进行100次比较,但没有找到它。谢谢你的帮助,我很抱歉错过了这么简单的事情