部署在Intranet IIS 10上的Angular 6客户端应用程序始终返回错误0

时间:2018-10-10 17:06:21

标签: angular iis .net-core

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

客户端应用程序始终出现错误0:未知错误,据我所知是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上部署客户端时,无法使其正常工作。任何想法都欢迎,我真的很拼命...

有关环境的有用信息:

感谢您的帮助...

Rejean

1 个答案:

答案 0 :(得分:0)

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

奇怪的是,Firefox没有给出任何提示,Fiddler和Charles都没有...

感谢Chrome(和Stack Overflow)帮助我弄清楚了......