IIS 通过我的 Node.js 服务器返回 404 错误

问题描述 投票:0回答:1

我现在正在通过 Node JS 和 IIS 开发一个网站。 在内部IP中,我试图确保可以从外部IP访问运行没有问题的网站。 我已经拥有一个 IP,因此我想通过在该站点中添加应用程序来使其可访问。 但是,在 localhost 上,当将连接的文件添加到外部站点上的应用程序时,会出现 404 错误。 如果您能告诉我如何解决它,我将不胜感激

我修改了index.js 文件以确保它有效。但即使这个文件也有 404 错误。

index.js:

const express = require('express');
const { user } = require('./dbconfig');
const app = express() ;
const PORT = process.env.PORT || 80;
const pool = require('./sql');
const path = require('path');


app.set('view engine','ejs');
app.engine('html',require('ejs').renderFile);
app.set('views',path.join(__dirname,'/views'));
app.use(express.urlencoded({ extended: true}));
app.use(express.static(path.join(__dirname,'uploads')))
app.use(express.static(path.join(__dirname,'/views')))


app.get('/',async(req,res) =>{
res.send('just do it');
});

app.listen(PORT, () => {
    console.log(`Server on = http://localhost:${PORT}/`);
});

web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers accessPolicy="Read, Script">
            <add name="iisnode" path="index.js" verb="*" modules="iisnode" requireAccess="Script" />
        </handlers>
        <iisnode watchedFiles=".js;node_modules\*;routes\*.js;views\*.jade" nodeProcessCommandLine="C:\program Files\nodejs\node.exe" />
        <rewrite>
            <rules>
                <rule name="SendToNode" enabled="true">
                    <match url="/*" />
                    <action type="Rewrite" url="index.js" />
                </rule>
            </rules>
        </rewrite>
        <httpRedirect enabled="false" destination="" />
        <staticContent>
            <mimeMap fileExtension=".ejs" mimeType="text/html" />
        </staticContent>
    </system.webServer>
</configuration>

这是我的 IIS 列表。 TS_AS 应用程序返回 404 错误

我添加我的 applicationHost.config 标签

        <sites>
            <site name="Default Web Site" id="1" serverAutoStart="true">
                <application path="/">
                    <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
                </application>
                <application path="/--------" applicationPool="DefaultAppPool">
                    <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\--------" />
                </application>
                <application path="/TS_AS" applicationPool="DefaultAppPool">
                    <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\TS_AS" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="*:80:" />
                </bindings>
            </site>
            <site name="test" id="3" serverAutoStart="true">
                <application path="/">
                    <virtualDirectory path="/" physicalPath="C:\inetpub\wwwroot\TS_AS" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation="*:8080:" />
                </bindings>
            </site>
        </sites>

我是一个菜鸟程序员,所以很抱歉我不能很好地解释问题

将此设置部署到本地主机站点(测试)时,屏幕显示没有任何问题。

node.js express iis
1个回答
0
投票

我自己解决了我的问题。感谢您对我的问题发表评论

问题是获取请求地址

app.get('/TS_AS/',async(req,res) =>{
res.send('just do it');
});

我必须在 GET 地址前面添加我的应用程序目录

© www.soinside.com 2019 - 2024. All rights reserved.