Permissões do IIS para permitir solicitações http REST de saída do código do site

1

Eu não posso usar solicitações HTTP de saída no IIS devido a algumas permissões de segurança ou algo assim

Estou tentando usar meu próprio serviço http REST (é um aplicativo independente) em localhost no meu site CGI perl

use LWP::UserAgent;
my $ua = LWP::UserAgent -> new (timeout => 600);
my $response = $ua -> get ('http://127.0.0.1:8000/get');
if ($response -> is_error ()) {
    die join ("\n\n",
        $response -> error_as_HTML ()
        , $response -> code ()
        , $response -> content ()
        , $response -> status_line ()
    );
}

Aqui o que eu tenho

<html>
<head><title>An Error Occurred</title></head>
<body>
<h1>An Error Occurred</h1>
<p>500 Can't connect to 127.0.0.1:8000</p>
</body>
</html>


500

Can't connect to 127.0.0.1:8000

Invalid argument. at C:/strawberry/perl/site/lib/LWP/Protocol/http.pm line 60.


500 Can't connect to 127.0.0.1:8000 at C:\inetpub\wwwroot\test\lib\Content\_lib.pm line 724.

meu 127.0.0.1:8000 service é um aplicativo independente fora do IIS, está em execução e fornece um status ativo quando eu acesso http://127.0.0.1:8000/get via navegador; Eu posso ver que está escutando na porta 8000; Eu desliguei o firewall

mesma configuração com o mesmo aplicativo funciona com lighttpd na caixa linux, o problema ocorre apenas quando eu corro no windows e no IIS

Eu tentei executar meu pool de aplicativos perl CGI como Network Service e até Local System account - mesmo resultado

Como devo configurar o IIS para permitir chamadas HTTP REST de saída para outro serviço da web autônomo no host local?

UPDATE

Após algumas investigações de baixo nível, parece que este é um problema comum do IIS

apenas google IIS Can't create TCP/IP socket (10106)

    
por jonny 27.10.2014 / 08:50

1 resposta

2

Não é uma restrição de segurança. Perl tenta encontrar algumas DLLs do driver no registro do sistema:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip

mas o caminho para dll é baseado na variável de ambiente% SystemRoot% e o IIS não passa o ambiente através do FastCGI

Adicione o seguinte texto ao seu programa:

BEGIN {

    $ENV {SYSTEMROOT} = "C:\Windows";

};

    
por 29.10.2014 / 11:12

Tags