【问题标题】:You do not have permission to view this directory or page for Azure Ionic App您无权查看 Azure Ionic App 的此目录或页面
【发布时间】:2017-11-08 15:05:42
【问题描述】:

我的 Ionic2 Node.js 应用在本地运行,我使用 GitBash 成功将其推送到 azure。

浏览时显示:

“您无权查看此目录或页面。”

我确实添加了

web.config、process.json、index.js、

"start": "node index.js" 

在 package.json 和“azure 移动服务”插件中。

没有进展。有人可以帮忙吗?谢谢...

Web.Config:

<configuration>
<system.webServer>
      <handlers>
        <add name="iisnode" path="index.js" verb="*" modules="iisnode"/>
      </handlers>
      <rewrite>
            <rules>
                <rule name="SPA">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/" />
                </rule>
            </rules>
        </rewrite>
</system.webServer>
</configuration> 

process.json:

{
  "name": "worker",
  "script": "./index.js",
  "instances": 1,
  "merge_logs": true,
  "log_date_format": "YYYY-MM-DD HH:mm Z",
  "watch": true,
  "watch_options": {
    "followSymlinks": true,
    "usePolling": true,
    "interval": 5
  }
}

package.json:

{
  "name": "io.cordova.myappd3d469",
  "author": "",
  "homepage": "",
  "private": true,
  "scripts": {
    "start": "node index.js",
    "clean": "ionic-app-scripts clean",
    "build": "ionic-app-scripts build",
    "ionic:build": "ionic-app-scripts build",
    "ionic:serve": "ionic-app-scripts serve",
    "watch": "ionic-app-scripts watch"
  },
  "dependencies": {
    "@angular/common": "2.2.1",
    "@angular/compiler": "2.2.1",
    "@angular/compiler-cli": "2.2.1",
    "@angular/core": "2.2.1",
    "@angular/forms": "2.2.1",
    "@angular/http": "2.2.1",
    "@angular/platform-browser": "2.2.1",
    "@angular/platform-browser-dynamic": "2.2.1",
    "@angular/platform-server": "2.2.1",
    "@ionic/storage": "1.1.7",
    "ionic-angular": "2.0.1",
    "ionic-native": "2.4.1",
    "ionicons": "3.0.0",
    "rxjs": "5.0.0-beta.12",
    "sw-toolbox": "3.4.0",
    "zone.js": "0.6.26"
  },
  "devDependencies": {
    "@ionic/app-scripts": "1.1.0",
    "typescript": "2.0.9"
  },
  "description": "Ionic2Blank: An Ionic project",
  "cordovaPlugins": [
    "cordova-plugin-whitelist",
    "cordova-plugin-console",
    "cordova-plugin-statusbar",
    "cordova-plugin-device",
    "cordova-plugin-splashscreen",
    "ionic-plugin-keyboard"
  ],
  "cordovaPlatforms": [],
  "-vs-binding": {
    "BeforeBuild": [ "ionic:build" ]
  }
}

index.js:

var http = require('http');

var server = http.createServer(function (request, response) {

    response.writeHead(200, { "Content-Type": "text/plain" });
    response.end("Hello World!");

});

var port = process.env.PORT || 1337;
server.listen(port);

console.log("Server running at http://localhost:%d", port);

Azure 网络应用设置:

【问题讨论】:

  • 您能否在问题中包含您的web.config 的全部内容?
  • 好的,但请记住,出于某种原因,它认为 www 文件夹是根文件夹...

标签: node.js cordova azure typescript ionic2


【解决方案1】:

您可以改用以下web.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="iisnode" path="index.js" verb="*" modules="iisnode" />
        </handlers>
        <rewrite>
            <rules>
                <!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
                <rule name="StaticContent">
                    <action type="Rewrite" url="public{REQUEST_URI}" />
                </rule>
                <!-- All other URLs are mapped to the node.js site entry point -->
                <rule name="DynamicContent">
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True" />
                        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.js" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

【讨论】:

  • 嗯,你需要在本地构建Ionic2应用程序,然后将编译好的文件部署到Azure Web App。而且您不再需要使用 Node.js 进程来托管它们,因为 Azure Web 应用程序在 Microsoft IIS 上运行,它可以在没有 web.config 文件的情况下提供静态文件。
  • 我的 Ionic2 Node.js 应用在 Visual Studio 2017 本地运行,我使用 GitBash 成功将其推送到 azure Web 应用服务
猜你喜欢
  • 2021-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-02
  • 2021-01-29
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
相关资源
最近更新 更多