【问题标题】:Angular 4 accessing json file under assets in IISAngular 4访问IIS中资产下的json文件
【发布时间】:2017-05-09 18:36:13
【问题描述】:

我正在开发一个从 CLI 构建的 Angular 4 应用程序,而后端 API 仍在开发中,我在资产文件夹下为 http.get 设置了一些 json 文件。一切在我的本地运行良好,但是当我部署到 IIS 时,在开发工具的网络选项卡中,我在尝试访问 json 文件时看到 404。我在代码中设置 URL 的方式是硬编码的“assets/api/manager/model.json”。我通过运行 npm build --prod 构建了项目并复制了 dist 文件夹中的内容。我确实在构建后看到了 dist 下的 assets/api/manager/model.json 文件。我发现在 IIS 上托管时有多种方法可以调整路由,我已经尝试了所有方法(我认为),但似乎无法使其正常工作。

下面是http.get代码

  private assignTasksViewModelUrl = 'assets/api/manager/model.json';
   getTaskAssignmentViewModel(): Observable<AssignTasksViewModel> {

    return this.http.get(this.assignTasksViewModelUrl)
            .map((response: Response) => <AssignTasksViewModel>(this.extractDate(response)))
            .do(data => console.log(JSON.stringify(data)))
            .catch(this.handleError);
  }

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。 stackoverflow.com/help/mcve

标签: angular iis angular2-routing


【解决方案1】:

为我添加作品。只是提醒标签应该在里面 :

<system.webServer>
   ...
   <staticContent>
      <remove fileExtension=".json" />
       <mimeMap fileExtension=".json" mimeType="application/json" />
   </staticContent>
   ...
</system.webServer>

另一种方法是到 IIS 管理器中添加 MIME 类型。

转到 IIS 管理器 --> 打开您的网站 --> 单击右侧的“功能视图”选项卡 --> MIME 类型(双击)--> 操作:添加(右侧)--> 文件扩展名:.json,MIME 类型:application/json。

【讨论】:

    【解决方案2】:

    以防其他人遇到同样的问题。我的问题是我们的 IIS 未配置为处理 .json 文件。通过将以下内容添加到 web.config 可以解决问题。

    <staticContent>
        <remove fileExtension=".json" />
        <mimeMap fileExtension=".json" mimeType="application/json" />
      </staticContent>

    【讨论】:

      猜你喜欢
      • 2020-09-11
      • 2017-12-11
      • 2017-06-14
      • 2022-11-24
      • 1970-01-01
      • 2020-04-03
      • 2019-12-28
      • 1970-01-01
      • 2021-08-07
      相关资源
      最近更新 更多