首页 > 解决方案 > 部署在 Intranet IIS 10 上的 Angular 6 客户端应用程序始终返回错误 0

问题描述

我在这个论坛上搜索了几天,我无法解决这个问题。
只是为了描述环境,我有一个运行 IIS 10 的 Windows 10 机器,客户端应用程序在端口 80 上运行,WebService (.NET core 2.0) 在端口 123 上运行。

客户端应用程序一直出现错误 0 : Unknown Error,据我了解是 CORS 问题。

我使用以下内容配置了我的 Web 服务(服务器端):

services.AddCors(options => options.AddPolicy("CorsPolicy", 
    builder => {
        builder.AllowAnyOrigin()
               .AllowAnyMethod()
               .AllowAnyHeader()
               .AllowCredentials();
}));

后来,我用

app.UseCors("CorsPolicy");

我的 Angular 6 应用程序定义了如下服务:

export class SearchService {
    const baseUrl = 'http://drague.karaoke:123/api';
    const searchUrl = this.baseUrl + '/KaraokeSongs/search';

    constructor(private http: HttpClient) { }

    search(term) {
        if (!term) {
            term = ""
        }

        var restResponse:SearchSong[];
        const parameters = new HttpParams().set('filter', term);

        const headerDict = new HttpHeaders({
            'Content-Type': 'application/json',
            'Accept': 'application/json',
            'Access-Control-Allow-Methods': 'GET,PUT,OPTIONS',
            'Access-Control-Allow-Headers': 'Access-Control-Allow-Origin, Content-Type, Accept, Accept-Language, Origin, User-Agent',
            'Access-Control-Allow-Origin': '*',
        });

        console.log(headerDict);

        return this.http.get<SearchSong[]>(this.searchUrl, { headers: headerDict, params: parameters });
  }

当我尝试使用 Postman 时,一切都很好,服务按预期响应。当我使用以下配置运行 ng-serve --proxy-config 时也是如此:

{
   "/api" : {
    "target": "http://drague.karaoke:123",
    "secure": false,
    "changeOrigin": true,
    "logLevel": "debug"
  }
}

当我在 IIS 上部署客户端时,我无法让它工作。欢迎任何想法,我真的很绝望......

关于环境的有用信息:

谢谢你的帮助...

雷让

标签: angulariis.net-core

解决方案


我做了很多测试和试验。最后,端口 123 似乎是保留端口(用于 NTP)。我将端口更改为81,一切正常...

奇怪的是,Firefox 没有给出任何暗示,Fiddler 和 Charles 也没有……

感谢 Chrome(和 Stack Overflow)帮助我解决了这个问题......


推荐阅读