/ / Uprawnienia i żądanie z iisnode - node.js, azure, express, iis, iisnode

Uprawnienia i żądania z iisnode - node.js, azure, express, iis, iisnode

Uruchomiłem aplikację Node.js i wystąpił poważny błąd

iisnode encountered an error when processing the request.

HRESULT: 0x2
HTTP status: 500
HTTP subStatus: 1002
HTTP reason: Internal Server Error
You are receiving this HTTP 200 response because system.webServer/iisnode/@devErrorsEnabled configuration setting is "true".

In addition to the log of stdout and stderr of the node.exe process, consider using debugging and ETW traces to further diagnose the problem.

The node.exe process has not written any information to stderr or iisnode was unable to capture this information. Frequent reason is that the iisnode module is unable to create a log file to capture stdout and stderr output from node.exe. Please check that the identity of the IIS application pool running the node.js application has read and write access permissions to the directory on the server where the node.js application is located. Alternatively you can disable logging by setting system.webServer/iisnode/@loggingEnabled element of web.config to "false".

Niektórzy mówią, że błąd pochodzi od innych użytkowników. Inni mówią, że to z webconfig, który muszę ustawić na server.js, ustawiłem go już, nawet jeśli go usunę, mam te same błędy.

Próbowałem za pomocą klienta iis ustawić uprawnienia wprowadź opis obrazu tutaj

W ciągu 3 dni nie mogę zrozumieć, co zrobiłem źle, próbowałem zi bez web.cofig. Czy czegoś brakuje? Również połączenie z MongoDB ustawia się za pomocą łańcucha udostępnionego przez portal Azure.

Odpowiedzi:

0 dla odpowiedzi № 1

Jestem w stanie odtworzyć dokładnie ten sam błąd.

wprowadź opis obrazu tutaj

Tutaj jest mój server.js:

const express = require("express")
const app = express()

app.get("/", function (req, res) {
res.send("Hello World!")
})

app.listen(3000)

W web.config, Mam to:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.webServer>
<webSocket enabled="false" />

<handlers>
<add name="iisnode" path="server.js" verb="*" modules="iisnode" />
</handlers>

<rewrite>
<rules>
<rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
<match url="^server.js/debug[/]?" />
</rule>
<rule name="StaticContent">
<action type="Rewrite" url="public{REQUEST_URI}" />
</rule>
<rule name="DynamicContent">
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True" />
</conditions>
<action type="Rewrite" url="server.js" />
</rule>
</rules>
</rewrite>

<security>
<requestFiltering>
<hiddenSegments>
<remove segment="bin" />
</hiddenSegments>
</requestFiltering>
</security>

<httpErrors existingResponse="PassThrough" />

<iisnode
watchedFiles="web.config;*.js"
node_env="%node_env%"
loggingEnabled="true"
logDirectory="iisnode"
debuggingEnabled="true"
maxLogFileSizeInKB="1048"
maxLogFiles="50"
devErrorsEnabled="true" />
</system.webServer>
</configuration>

Dzięki tym konfiguracjom mogę odwiedzić https://{mysitename}.scm.azurewebsites.net/api/vfs/site/wwwroot/iisnode/index.html aby zobaczyć szczegółowy błąd.

wprowadź opis obrazu tutaj

Po zmianie app.listen(3000) do app.listen(process.env.PORT || 3000), Mam to do pracy.

wprowadź opis obrazu tutaj

Więcej na ten temat:

Aplikacja Nodejs zwraca błąd: iisnode napotkał błąd podczas przetwarzania żądania HRESULT: 0x2 HTTP status: 500 HTTP subStatus: 1002