Azure 应用程序服务上的 Angular 应用程序 - 从资产文件夹加载配置文件时出现 404 错误

2024-03-27

我正在尝试在azure应用程序服务平台(Windows机器)上部署Angular 6应用程序。应用程序本身只是一个新的角度应用程序(从 ng new appname 生成的基本代码)。我在本教程之后添加了一些次要代码,以便使用配置文件并利用 vsts 发布管道中的变量替换 -使用 vsts 管理 Angular 应用程序的设置 https://blog.bennymichielsen.be/2017/07/27/managing-settings-for-an-angular-app-with-vsts/.

这些是我对生成的应用程序所做的代码更改。 在app.module.ts中

export function initializeAppSettings(appSettings: AppSettings) {
  return () => appSettings.load();
}

...

providers: [AppSettings, {
    provide: APP_INITIALIZER,
    useFactory: initializeAppSettings,
    deps: [AppSettings],
    multi: true
  }]

对于我的 appsettings.ts 文件

export interface AppConfiguration {
  apiUrl: string;
}

@Injectable()
export class AppSettings {
  static config: AppConfiguration;

  constructor(private http: HttpClient) {}

  load(): Promise<any> {
    const appSettingsJson = environment.production ? 'assets/appsettings.json' : 'assets/appsettings.local.json';
    return new Promise<any>(((resolve, reject) => {
      this.http.get<AppConfiguration>(appSettingsJson)
        .toPromise()
        .then(result => {
          AppSettings.config = result;
          resolve();
        }).catch(reason => {
          reject(`unable to load settings file ${appSettingsJson} due to ${JSON.stringify(reason)}`);
      });
    }));
  }
}

在我的 angular.json 文件中

"assets": [
              "src/favicon.ico",
              "src/assets",
              "src/web.config"
            ]

以及以下 web.config 文件

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Angular" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

我的 src/assets/appsettings.json 文件 atm 中有一个设置

{
  "apiUrl": "https://localhost:5001/api/"
}

当使用 ngserve 在本地运行,甚至使用 ng build 部署到本地 IIS 时,此设置完全可以正常工作。我使用 app.component.ts 和 app.component.html 中加载的设置来验证它是否正确加载。但是当我将应用程序部署到 azure 时,出现 404 错误。

由于错误而无法加载设置文件 asset/appsettings.local.json 到 {"headers":{"normalizedNames":{},"lazyUpdate":null},"status":404,"statusText":"不 找到","网址":"https://mydomain/assets/appsettings.local.json https://mydomain/assets/appsettings.local.json","ok":false,"name":"HttpErrorResponse","message":"Http 失败响应https://mydomain/assets/appsettings.local.json https://mydomain/assets/appsettings.local.json: 404 Not Found","error":"您要查找的资源已被找到 已删除、已更名或暂时不可用。”}

我尝试将单独的 appsettings.json 文件显式添加到 angular.json 中的资产数组中,并且还尝试使用和不使用 web.config 文件。如果我只将一个基本的角度应用程序部署到azure(即没有额外的代码来加载appsettings.json文件),它就可以工作(即使没有web.config文件)。我对 Angular(以及一般的 Web 开发)非常陌生,并且已经尽我所能寻找解决方案,但到目前为止还没有任何解决方案。


根据 @Martin Brandl 评论,将以下内容添加到我的 web.config 文件中就可以了。谢谢。

<staticContent><mimeMap fileExtension=".json" mimeType="application/json" /></staticContent>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Azure 应用程序服务上的 Angular 应用程序 - 从资产文件夹加载配置文件时出现 404 错误 的相关文章

随机推荐

  • 密码保护数据库

    我使用 Entity Framework Core 1 0 在 C 桌面应用程序中管理 SQLite 数据库 如何使用密码保护数据库 我知道如何使用 NET 类 System Data SQLite 但是如何使用 Entity Framew
  • numpy 的复数问题

    我试图再次翻译一些 matlab 代码 但我遇到了另一个问题 代码本身非常简单 只是 4 节点旋转因子的演示 这是我的尝试 from numpy import from matplotlib import pyplot as plt x z
  • 如何使重定向视图跳转到django中的某个部分

    所以我的模板中有一个部分 div Comments go here div 现在我希望我的 django 重定向功能重定向到此页面并跳转到此 div id return redirect post detail post slug 我该放在
  • “event.layerX 和 event.layerY 在 WebKit 中已损坏并已弃用。”错误

    我刚刚将 Chrome 更新到版本 16 0 912 63 现在使用 jQuery 1 7 1 时出现数百个错误 似乎只要移动鼠标就会触发 event layerX and event layerY are broken and depre
  • 避免与策略模式耦合

    我试图将策略模式应用于特定情况 但遇到了如何避免将每个具体策略耦合到为其提供数据的上下文对象的问题 以下是模式的简化情况 该模式以几种不同的方式发生 但应以类似的方式处理 我们有一个对象Acquisition它提供与特定时间框架相关的数据
  • Visual Studio 2008 HTML 格式 - 它是否有效?

    这是另一个 Visual Studio 2008 HTML 格式问题 我想我要么在臭名昭著的糟糕 VS HTML 格式中发现了一个错误 要么我做错了什么 这就是我正在做的 我通过以下方式删除所有客户端标签 工具 gt 选项 gt 文本编辑器
  • CIImage 范围以像素或点为单位?

    我正在使用 CIImage 虽然我知道它不是线性图像 但它确实保存了一些数据 我的问题是 CIImage 的范围属性是否返回像素或点 根据文档 https developer apple com reference coreimage ci
  • 在包含中使用 $_SERVER['DOCUMENT_ROOT'] 是个好主意吗?

    例如 这是一个好主意吗 require once SERVER DOCUMENT ROOT include php 如果您在同一台服务器上有两个虚拟主机 一个用于实时 一个用于开发 并且具有不同的 Apache DocumentRoots
  • 用于生成和查看 Azure 块 Blob 和 Azure 文件共享的 SAS(共享访问签名)的工具或使用示例

    我正在寻找一个工具或使用示例来生成和查看 Azure Block Blob 和 Azure 文件共享的 SAS 共享访问签名 有很多块 Blob 和容器的示例 但 Azure 文件共享 SAS 示例或工具呢 创造能力Shared Acces
  • 使用 Android NDK 的本机代码的代码覆盖率

    我正在使用 Android NDK r16 为我的 Android 项目构建本机代码 我希望能够获得本机单元测试的代码覆盖率 这可能吗 根据我的研究 Android 中似乎没有默认提供此功能 我们需要在 Clang 中使用自定义编译器 链接
  • 尝试加载瞬态 Web Worker 时出现“Reflect.defineMetadata”错误

    我正在尝试从 Web Worker 内部加载 aurelia 框架 以便将 Worker 装饰为瞬态 这是工人装载机 importScripts jspm packages system js System config defaultJS
  • Alt 标签不显示在浏览器上

    我正在 HTML 中测试我的代码 以确保我已正确完成所有操作 但我似乎无法在浏览器上显示替代文本 我尝试使用最新版本的 Chrome 和 Firefox
  • 将大量文本粘贴到 vim 中很慢?

    以前有人向我展示过如何做到这一点 但我现在不知道它是什么 我知道关于 set paste但这不是问题 Use p or P立即从系统剪贴板粘贴 Vim 必须编译为 clipboard http vimdoc sourceforge net
  • 如何在mysql错误日志中添加日期

    Mysql错误日志旁边只有一个数字和它们的创建时间 我需要对其进行格式化 以便它还包括日期 我该怎么办 130207 2 25 29 Note Plugin FEDERATED is disabled 130207 2 25 29 Inno
  • Facebook 应用程序和选项卡有什么区别?

    我想添加一个指向我的 Facebook 页面的链接 该链接将在我的页面中打开新信息 不是网站 而是来自我的保龄球手使用的评分程序的信息 无论如何 我都不是程序员 而且员工中也没有程序员 我正在努力自学这些东西 首先 我不知道我要添加的内容是
  • 在 OSX Mountain Lion 上安装 PHP 的 mcrypt 扩展

    对于潜在的 n00b 问题提前致歉 我正在尝试在我的 OSX Mountain Lion 计算机上安装 PHP 的 mcrypt 扩展 终端中的以下步骤是我迄今为止为实现 PHP 安装所做的操作 cd path to downloaded
  • laravel 用户删除时如何重置自动增量?

    我一直在努力寻找一种在 Laravel 4 中重置自动增量值的方法 但似乎至少目前 Laravel 4 中还没有嵌入此功能 所以我这样做了 user User find user id if user if user gt delete D
  • 为什么我在任何来源中都找不到 multi_json-1.3.1?

    我有一个简单的 Rails 应用程序想要部署到 Heroku 当我运行以下命令时 git push heroku master 显示以下错误消息 Could not find multi json 1 3 1 in any of the s
  • 此时无法安装此应用程序。Xcode 9.2

    我已经更改了我的应用程序名称和包标识符 现在当我尝试运行我的应用程序时 它显示一个错误This app could not be installed at this time 为什么会这样呢 为什么它不运行该应用程序 我知道这个问题已经得到
  • Azure 应用程序服务上的 Angular 应用程序 - 从资产文件夹加载配置文件时出现 404 错误

    我正在尝试在azure应用程序服务平台 Windows机器 上部署Angular 6应用程序 应用程序本身只是一个新的角度应用程序 从 ng new appname 生成的基本代码 我在本教程之后添加了一些次要代码 以便使用配置文件并利用