- ABP Framework version: v9.0.2
- UI Type: Angular
- Database System: EF Core (PostgreSQL, etc..)
- Tiered (for MVC) or Auth Server Separated (for Angular): yes
- Exception message and full stack trace: Access to XMLHttpRequest at 'https://treva-publicgateway.tav.aero/api/abp/application-configuration?includeLocalizationResources=false' from origin 'https://treva-website.tav.aero' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
- Steps to reproduce the issue: Everything is working on local, but when i build and deploy it'starts to give above exception.
19 Answer(s)
-
0
Angular docker file: FROM node:22.13-alpine as builder WORKDIR /src
COPY . . WORKDIR /src
RUN yarn RUN yarn run build:prod
FROM nginx:alpine as publish
COPY --from=builder /src/dynamic-env.json /usr/share/nginx/html COPY --from=builder /src/nginx.conf /etc/nginx/conf.d/default.conf COPY --from=builder /src/dist/treva /usr/share/nginx/html
environment.ts: import { Environment } from '@abp/ng.core';
const baseUrl = 'http://localhost:4200';
const oAuthConfig = { issuer: 'https://treva-authserver.tav.aero/', // redirectUri: baseUrl, clientId: 'WebSite', // responseType: 'code', dummyClientSecret: '1q2w3e*', scope: 'offline_access openid address email phone profile roles AuthServer AdministrationService GdprService LanguageService ChatService ContentManagementService DocumentManagementService FormManagementService EmailService SmsService NotificationService DemoService FastTrackService LoungeService AtuService DutyFreeService', requireHttps: false, impersonation: { tenantImpersonation: true, userImpersonation: true } };
export const environment = { production: false, application: { baseUrl, name: 'Treva' }, localization: { defaultResourceName: 'Treva' }, oAuthConfig, apis: { default: { url: 'https://treva-publicgateway.tav.aero', rootNamespace: 'TavTechnologies.Treva' }, AbpAccountPublic: { url: oAuthConfig.issuer, rootNamespace: 'AbpAccountPublic' } } } as Environment;
environment.prod.ts: import { Environment } from '@abp/ng.core';
const baseUrl = 'https://treva-website.tav.aero';
const oAuthConfig = { issuer: 'https://treva-authserver.tav.aero/', // redirectUri: baseUrl, clientId: 'WebSite', // responseType: 'code', dummyClientSecret: '1q2w3e*', scope: 'offline_access openid address email phone profile roles AuthServer AdministrationService GdprService LanguageService ChatService ContentManagementService DocumentManagementService FormManagementService EmailService SmsService NotificationService DemoService FastTrackService LoungeService AtuService DutyFreeService', requireHttps: true, impersonation: { tenantImpersonation: true, userImpersonation: true }, strictDiscoveryDocumentValidation: false, skipIssuerCheck: true };
export const environment = { production: true, application: { baseUrl, name: 'Treva', }, localization: { defaultResourceName: 'Treva' }, oAuthConfig, apis: { default: { url: 'https://treva-publicgateway.tav.aero', rootNamespace: 'TavTechnologies.Treva' }, AbpAccountPublic: { url: oAuthConfig.issuer, rootNamespace: 'AbpAccountPublic' } }, remoteEnv: { url: '/getEnvConfig', mergeStrategy: 'overwrite' } } as Environment;
website-configmap.yaml: apiVersion: v1 kind: ConfigMap metadata: name: "treva-website-configmap" data: dynamic-env.json: |- { "production": "true", "application": { "baseUrl": "https://treva-website.tav.aero", "name": "Treva", "logoUrl": "" }, "localization": { "defaultResourceName": "Treva" }, "oAuthConfig": { "issuer": "https://treva-authserver.tav.aero", "clientId": "WebSite", "dummyClientSecret": "1q2w3e*", "scope": "offline_access openid address email phone profile roles AuthServer AdministrationService AuditLoggingService ChatService ContentManagementService DemoService DocumentManagementService EmailService FileManagementService FormManagementService GdprService IdentityService LanguageService NotificationService SaasService SmsService FastTrackService LoungeService AtuService DutyFreeService SettingService ProfileService OrderService PaymentService", "requireHttps": "true", "impersonation": { "tenantImpersonation": "true", "userImpersonation": "true" }, "strictDiscoveryDocumentValidation": "false", "skipIssuerCheck": "true" }, "apis": { "default": { "url": "https://treva-publicgateway.tav.aero", "rootNamespace": "TavTechnologies.Treva" }, "AbpAccountPublic": { "url": "https://treva-authserver.tav.aero", "rootNamespace": "AbpAccountPublic" } } }
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
PublicGatewayLog: [12:00:35 INF] Request starting HTTP/1.1 OPTIONS http://treva-publicgateway.tav.aero/api/abp/application-configuration?includeLocalizationResources=false - null null [12:00:35 INF] CORS policy execution failed. [12:00:35 INF] Request origin https://treva-website.tav.aero does not have permission to access the resource. [12:00:35 INF] Request finished HTTP/1.1 OPTIONS http://treva-publicgateway.tav.aero/api/abp/application-configuration?includeLocalizationResources=false - 204 null null 0.2578ms
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
-
0
Dear friends can you help me, please?
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
-
0
Hello Berkan,
Thank you for your quick response. I already add the "https://treva-website.tav.aero" value to app settings, helm chart values and I can see the CORS values in pod yaml too.
I couldn't find a proper way too understand the real problem.
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
Hello,
When you look at the pod's container, can you see that the relevant environment variable is set? ,
Also, the problem seems to be caused by CORS, but can you disable it as mentioned in this document to clear your doubts here?
You can search for
context.Services.AddCorsin the solution and find where it is configured.Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
TrevaPublicGatewayModule:
private static void ConfigureCors(ServiceConfigurationContext context, IConfiguration configuration) { var corsOrigins = configuration["App:CorsOrigins"]; context.Services.AddCors(options => { options.AddDefaultPolicy(builder => { if (!corsOrigins.IsNullOrEmpty()) { builder .WithOrigins( corsOrigins! .Split(",", StringSplitOptions.RemoveEmptyEntries) .Select(o => o.RemovePostFix("/")) .ToArray() ) .WithAbpExposedHeaders() .SetIsOriginAllowedToAllowWildcardSubdomains() .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); } }); }); }Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
website.yaml:
apiVersion: apps/v1 kind: Deployment metadata: name: "treva-website" spec: selector: matchLabels: app: "treva-website" template: metadata: labels: app: "treva-website" spec: containers: - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: "{{ .Values.image.pullPolicy }}" name: "treva-website" ports: - name: "http" containerPort: 80 volumeMounts: - name: config-volume mountPath: /usr/share/nginx/html/dynamic-env.json subPath: dynamic-env.json volumes: - name: config-volume configMap: name: treva-website-configmap **website-configmap.yaml**: apiVersion: v1 kind: ConfigMap metadata: name: "treva-website-configmap" data: dynamic-env.json: |- { "production": "true", "application": { "baseUrl": "https://treva-website.tav.aero", "name": "Treva", "logoUrl": "" }, "localization": { "defaultResourceName": "Treva" }, "oAuthConfig": { "issuer": "https://treva-authserver.tav.aero", "clientId": "WebSite", "dummyClientSecret": "1q2w3e*", "scope": "offline_access openid address email phone profile roles AuthServer AdministrationService AuditLoggingService ChatService ContentManagementService DemoService DocumentManagementService EmailService FileManagementService FormManagementService GdprService IdentityService LanguageService NotificationService SaasService SmsService FastTrackService LoungeService AtuService DutyFreeService SettingService ProfileService OrderService PaymentService", "requireHttps": "true", "impersonation": { "tenantImpersonation": "true", "userImpersonation": "true" }, "strictDiscoveryDocumentValidation": "false", "skipIssuerCheck": "true" }, "apis": { "default": { "url": "https://treva-publicgateway.tav.aero", "rootNamespace": "TavTechnologies.Treva" }, "AbpAccountPublic": { "url": "https://treva-authserver.tav.aero", "rootNamespace": "AbpAccountPublic" } } }Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
Also, there is another client app which created with Mvc UI also using same gateway and there is not any problem.
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)
-
0
Hi Berkan,
I didn't make any CORS configuration on Angular side if i had to where it had to be?
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
nginx.conf: server { listen 80; listen [::]:80; server_name _;
#access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/ /index.html =404; } location /getEnvConfig { default_type 'application/json'; add_header 'Access-Control-Allow-Origin' 'https://treva-website.tav.aero' always; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT' always; add_header 'Content-Type' 'application/json'; try_files $uri /dynamic-env.json; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; }}
Dockerfile.azure: FROM node:22.13-alpine as builder WORKDIR /src
COPY . . WORKDIR /src
RUN yarn RUN yarn run build:prod
FROM nginx:alpine as publish
COPY --from=builder /src/dynamic-env.json /usr/share/nginx/html COPY --from=builder /src/nginx.conf /etc/nginx/conf.d/default.conf COPY --from=builder /src/dist/treva /usr/share/nginx/html
But i used nginx for reverse proxying and i added the headers that i need to add.
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
Can you also send the Helm configurations of your public gateway application?
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
publicgateway.yaml:
apiVersion: apps/v1 kind: Deployment metadata: name: "treva-publicgateway" spec: selector: matchLabels: app: "treva-publicgateway" template: metadata: labels: app: "treva-publicgateway" spec: containers: - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: "{{ .Values.image.pullPolicy }}" name: "treva-publicgateway" ports: - name: "http" containerPort: 80 env: - name: "DOTNET_ENVIRONMENT" value: "{{ .Values.global.dotnetEnvironment }}" - name: "App__CorsOrigins" value: "{{ .Values.app.corsOrigins }}, {{ include "treva.hosts.authserver" . }}, {{ include "treva.hosts.webpublic" . }}, {{ include "treva.hosts.angular" . }}" - name: "ElasticSearch__IsLoggingEnabled" value: "{{ .Values.global.elasticSearch.isLoggingEnabled }}" - name: "ElasticSearch__Url" value: "http://treva-elasticsearch:{{ .Values.global.elasticSearch.port }}" - name: "Swagger__IsEnabled" value: "{{ .Values.swagger.isEnabled }}" - name: "AbpStudioClient__StudioUrl" value: "{{ .Values.global.abpStudioClient.studioUrl }}" - name: "AbpStudioClient__IsLinkEnabled" value: "{{ .Values.global.abpStudioClient.isLinkEnabled }}" - name: "ReverseProxy__Clusters__AuthServer__Destinations__AuthServer__Address" value: "http://treva-authserver" - name: "ReverseProxy__Clusters__Administration__Destinations__Administration__Address" value: "http://treva-administration" - name: "ReverseProxy__Clusters__Saas__Destinations__Saas__Address" value: "http://treva-saas" - name: "ReverseProxy__Clusters__AuditLogging__Destinations__AuditLogging__Address" value: "http://treva-auditlogging" - name: "ReverseProxy__Clusters__Gdpr__Destinations__Gdpr__Address" value: "http://treva-gdpr" - name: "ReverseProxy__Clusters__FileManagement__Destinations__FileManagement__Address" value: "http://treva-fileManagement" - name: "ReverseProxy__Clusters__Language__Destinations__Language__Address" value: "http://treva-language" - name: "ReverseProxy__Clusters__Chat__Destinations__Chat__Address" value: "http://treva-chat" - name: "ReverseProxy__Clusters__Identity__Destinations__Identity__Address" value: "http://treva-identity" - name: "ReverseProxy__Clusters__ContentManagement__Destinations__ContentManagement__Address" value: "http://treva-contentmanagement" - name: "ReverseProxy__Clusters__DocumentManagement__Destinations__DocumentManagement__Address" value: "http://treva-documentmanagement" - name: "ReverseProxy__Clusters__FormManagement__Destinations__FormManagement__Address" value: "http://treva-formmanagement" - name: "ReverseProxy__Clusters__Email__Destinations__Email__Address" value: "http://treva-email" - name: "ReverseProxy__Clusters__Sms__Destinations__Sms__Address" value: "http://treva-sms" - name: "ReverseProxy__Clusters__Notification__Destinations__Notification__Address" value: "http://treva-notification" - name: "ReverseProxy__Clusters__Demo__Destinations__Demo__Address" value: "http://treva-demo" - name: "ReverseProxy__Clusters__FastTrack__Destinations__FastTrack__Address" value: "http://treva-fasttrack" - name: "ReverseProxy__Clusters__Lounge__Destinations__Lounge__Address" value: "http://treva-lounge" - name: "ReverseProxy__Clusters__DutyFree__Destinations__DutyFree__Address" value: "http://treva-dutyfree" - name: "ReverseProxy__Clusters__Atu__Destinations__Atu__Address" value: "http://treva-atu" - name: "ReverseProxy__Clusters__Setting__Destinations__Setting__Address" value: "http://treva-setting" - name: "ReverseProxy__Clusters__PrimeClass__Destinations__PrimeClass__Address" value: "http://treva-primeclass" - name: "ReverseProxy__Clusters__Yolcu360__Destinations__Yolcu360__Address" value: "http://treva-yolcu360" - name: "ReverseProxy__Clusters__Order__Destinations__Order__Address" value: "http://treva-order" - name: "ReverseProxy__Clusters__Profile__Destinations__Profile__Address" value: "http://treva-profile" - name: "ReverseProxy__Clusters__Payment__Destinations__Payment__Address" value: "http://treva-payment"publicgateway-service.yaml:
apiVersion: v1 kind: Service metadata: labels: name: "treva-publicgateway" name: "treva-publicgateway" spec: ports: - name: "80" port: 80 selector: app: "treva-publicgateway"publicgateway-ingress.yaml:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: "treva-publicgateway" annotations: nginx.ingress.kubernetes.io/rewrite-target: "/" nginx.ingress.kubernetes.io/force-ssl-redirect: "true" nginx.ingress.kubernetes.io/proxy-buffer-size: "32k" nginx.ingress.kubernetes.io/proxy-buffers-number: "8" # cert-manager.io/cluster-issuer: "letsencrypt" spec: ingressClassName: "nginx" tls: - hosts: - "{{ (include "treva.hosts.publicgateway" .) | trimPrefix "https://" }}" secretName: "{{ .Values.global.tlsSecret }}" rules: - host: "{{ (include "treva.hosts.publicgateway" .) | trimPrefix "https://" }}" http: paths: - path: / pathType: "Prefix" backend: service: name: "treva-publicgateway" port: number: 80_helpers.tpl:
{{- define "treva.hosts.authserver" -}} {{- print "https://" (.Values.global.hosts.authserver | replace "[RELEASE_NAME]" "treva") -}} {{- end -}} {{- define "treva.hosts.webgateway" -}} {{- print "https://" (.Values.global.hosts.webgateway | replace "[RELEASE_NAME]" "treva") -}} {{- end -}} {{- define "treva.hosts.kibana" -}} {{- print "https://" (.Values.global.hosts.kibana | replace "[RELEASE_NAME]" "treva") -}} {{- end -}} {{- define "treva.hosts.grafana" -}} {{- print "https://" (.Values.global.hosts.grafana | replace "[RELEASE_NAME]" "treva") -}} {{- end -}} {{- define "treva.hosts.web" -}} {{- print "https://" (.Values.global.hosts.web | replace "[RELEASE_NAME]" "treva") -}} {{- end -}} {{- define "treva.hosts.mobilegateway" -}} {{- print "https://" (.Values.global.hosts.mobilegateway | replace "[RELEASE_NAME]" "treva") -}} {{- end -}} {{- define "treva.hosts.webpublic" -}} {{- print "https://" (.Values.global.hosts.webpublic | replace "[RELEASE_NAME]" "treva") -}} {{- end -}} {{- define "treva.hosts.angular" -}} {{- print "https://" (.Values.global.hosts.angular | replace "[RELEASE_NAME]" "treva") -}} {{- end -}} {{- define "treva.hosts.publicgateway" -}} {{- print "https://" (.Values.global.hosts.publicgateway | replace "[RELEASE_NAME]" "treva") -}} {{- end -}}values.yaml:
global: tlsSecret: "treva-tls" abpStudioClient: isLinkEnabled: "false" studioUrl: "http://abp-studio-proxy:38271" elasticSearch: isLoggingEnabled: "true" port: 9200 hosts: authserver: "[RELEASE_NAME]-authserver.tav.aero" webgateway: "[RELEASE_NAME]-webgateway.tav.aero" kibana: "[RELEASE_NAME]-kibana.tav.aero" grafana: "[RELEASE_NAME]-grafana.tav.aero" web: "[RELEASE_NAME]-web.tav.aero" mobilegateway: "[RELEASE_NAME]-mobilegateway.tav.aero" publicgateway: "[RELEASE_NAME]-publicgateway.tav.aero" webpublic: "[RELEASE_NAME]-webpublic.tav.aero" angular: "[RELEASE_NAME]-website.tav.aero" connectionStrings: payment: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_PaymentService;User ID=postgres;Password=myPassword;Timeout=240;" profile: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_ProfileService;User ID=postgres;Password=myPassword;Timeout=240;" order: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_OrderService;User ID=postgres;Password=myPassword;Timeout=240;" yolcu360: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_Yolcu360Service;User ID=postgres;Password=myPassword;Timeout=240;" primeclass: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_PrimeClassService;User ID=postgres;Password=myPassword;Timeout=240;" setting: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_SettingService;User ID=postgres;Password=myPassword;Timeout=240;" dutyfree: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_DutyFreeService;User ID=postgres;Password=myPassword;Timeout=240;" atu: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_AtuService;User ID=postgres;Password=myPassword;Timeout=240;" lounge: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_LoungeService;User ID=postgres;Password=myPassword;Timeout=240;" fasttrack: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_FastTrackService;User ID=postgres;Password=myPassword;Timeout=240;" demo: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_DemoService;User ID=postgres;Password=myPassword;Timeout=240;" notification: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_NotificationService;User ID=postgres;Password=myPassword;Timeout=240;" sms: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_SmsService;User ID=postgres;Password=myPassword;Timeout=240;" email: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_EmailService;User ID=postgres;Password=myPassword;Timeout=240;" formmanagement: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_FormManagementService;User ID=postgres;Password=myPassword;Timeout=240;" documentmanagement: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_DocumentManagementService;User ID=postgres;Password=myPassword;Timeout=240;" contentmanagement: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_ContentManagementService;User ID=postgres;Password=myPassword;Timeout=240;" administration: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_Administration;User ID=postgres;Password=myPassword;Timeout=240;" blobStoring: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_BlobStoring;User ID=postgres;Password=myPassword;Timeout=240;" identity: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_Identity;User ID=postgres;Password=myPassword;Timeout=240;" saas: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_SaasService;User ID=postgres;Password=myPassword;Timeout=240;" auditLogging: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_AuditLoggingService;User ID=postgres;Password=myPassword;Timeout=240;" gdpr: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_GdprService;User ID=postgres;Password=myPassword;Timeout=240;" filemanagement: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_FileManagementService;User ID=postgres;Password=myPassword;Timeout=240;" language: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_LanguageService;User ID=postgres;Password=myPassword;Timeout=240;" chat: "Host=[RELEASE_NAME]-postgresql;Port=5432;Database=Treva_ChatService;User ID=postgres;Password=myPassword;Timeout=240;" dotnetEnvironment: "Staging" enablePII: "true" stringEncryptionDefaultPassPhrase: "KiT4nzwu9KfP40zB" image: repository: "tavhqwebtrvdcr.tav.aero/treva/publicgateway" tag: "latest" pullPolicy: "IfNotPresent" swagger: isEnabled: "true" app: corsOrigins: "http://localhost:4200,http://localhost:44381,http://localhost:44380"Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
appsettings.json:
{ "App": { "CorsOrigins": "http://localhost:4200,http://localhost:44381,http://localhost:44380" }, "AuthServer": { "SwaggerClientId": "SwaggerTestUI" }, "ElasticSearch": { "IsLoggingEnabled": true, "Url": "http://localhost:9200" }, "Swagger": { "IsEnabled": true }, "ReverseProxy": { "Routes": { "AbpApi": { "ClusterId": "Administration", "Match": { "Path": "/api/abp/{**catch-all}" } }, "AdministrationSwagger": { "ClusterId": "Administration", "Match": { "Path": "/swagger-json/Administration/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Administration" } ] }, "Account": { "ClusterId": "AuthServer", "Match": { "Path": "/api/account/{**catch-all}" } }, "AuthServerSwagger": { "ClusterId": "AuthServer", "Match": { "Path": "/swagger-json/AuthServer/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/AuthServer" } ] }, "Gdpr": { "ClusterId": "Gdpr", "Match": { "Path": "/api/gdpr/{**catch-all}" } }, "GdprSwagger": { "ClusterId": "Gdpr", "Match": { "Path": "/swagger-json/Gdpr/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Gdpr" } ] }, "Language": { "ClusterId": "Language", "Match": { "Path": "/api/language-management/{**catch-all}" } }, "LanguageSwagger": { "ClusterId": "Language", "Match": { "Path": "/swagger-json/Language/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Language" } ] }, "Chat": { "ClusterId": "Chat", "Match": { "Path": "/api/chat/{**catch-all}" } }, "ChatSwagger": { "ClusterId": "Chat", "Match": { "Path": "/swagger-json/Chat/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Chat" } ] }, "CmsKit": { "ClusterId": "ContentManagement", "Match": { "Path": "/api/cms-kit/{**catch-all}" } }, "CmsKitPublic": { "ClusterId": "ContentManagement", "Match": { "Path": "/api/cms-kit-public/{**catch-all}" } }, "ContentManagement": { "ClusterId": "ContentManagement", "Match": { "Path": "/api/contentmanagement/{**catch-all}" } }, "ContentManagementSwagger": { "ClusterId": "ContentManagement", "Match": { "Path": "/swagger-json/ContentManagement/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/ContentManagement" } ] }, "DocumentManagement": { "ClusterId": "DocumentManagement", "Match": { "Path": "/api/documentmanagement/{**catch-all}" } }, "DocumentManagementSwagger": { "ClusterId": "DocumentManagement", "Match": { "Path": "/swagger-json/DocumentManagement/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/DocumentManagement" } ] }, "Forms": { "ClusterId": "FormManagement", "Match": { "Path": "/api/forms/{**catch-all}" } }, "Questions": { "ClusterId": "FormManagement", "Match": { "Path": "/api/questions/{**catch-all}" } }, "Responses": { "ClusterId": "FormManagement", "Match": { "Path": "/api/responses/{**catch-all}" } }, "FormManagement": { "ClusterId": "FormManagement", "Match": { "Path": "/api/formmanagement/{**catch-all}" } }, "FormManagementSwagger": { "ClusterId": "FormManagement", "Match": { "Path": "/swagger-json/FormManagement/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/FormManagement" } ] }, "Email": { "ClusterId": "Email", "Match": { "Path": "/api/email/{**catch-all}" } }, "EmailSwagger": { "ClusterId": "Email", "Match": { "Path": "/swagger-json/Email/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Email" } ] }, "Sms": { "ClusterId": "Sms", "Match": { "Path": "/api/sms/{**catch-all}" } }, "SmsSwagger": { "ClusterId": "Sms", "Match": { "Path": "/swagger-json/Sms/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Sms" } ] }, "Notification": { "ClusterId": "Notification", "Match": { "Path": "/api/notification/{**catch-all}" } }, "NotificationSwagger": { "ClusterId": "Notification", "Match": { "Path": "/swagger-json/Notification/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Notification" } ] }, "Demo": { "ClusterId": "Demo", "Match": { "Path": "/api/demo/{**catch-all}" } }, "DemoSwagger": { "ClusterId": "Demo", "Match": { "Path": "/swagger-json/Demo/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Demo" } ] }, "FastTrack": { "ClusterId": "FastTrack", "Match": { "Path": "/api/fasttrack/{**catch-all}" } }, "FastTrackSwagger": { "ClusterId": "FastTrack", "Match": { "Path": "/swagger-json/FastTrack/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/FastTrack" } ] }, "Lounge": { "ClusterId": "Lounge", "Match": { "Path": "/api/lounge/{**catch-all}" } }, "LoungeSwagger": { "ClusterId": "Lounge", "Match": { "Path": "/swagger-json/Lounge/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Lounge" } ] }, "Atu": { "ClusterId": "Atu", "Match": { "Path": "/api/atu/{**catch-all}" } }, "AtuSwagger": { "ClusterId": "Atu", "Match": { "Path": "/swagger-json/Atu/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Atu" } ] }, "DutyFree": { "ClusterId": "DutyFree", "Match": { "Path": "/api/dutyfree/{**catch-all}" } }, "DutyFreeSwagger": { "ClusterId": "DutyFree", "Match": { "Path": "/swagger-json/DutyFree/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/DutyFree" } ] }, "Setting": { "ClusterId": "Setting", "Match": { "Path": "/api/setting/{**catch-all}" } }, "SettingSwagger": { "ClusterId": "Setting", "Match": { "Path": "/swagger-json/Setting/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Setting" } ] }, "Yolcu360": { "ClusterId": "Yolcu360", "Match": { "Path": "/api/yolcu360/{**catch-all}" } }, "Yolcu360Swagger": { "ClusterId": "Yolcu360", "Match": { "Path": "/swagger-json/Yolcu360/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Yolcu360" } ] }, "Order": { "ClusterId": "Order", "Match": { "Path": "/api/order/{**catch-all}" } }, "OrderSwagger": { "ClusterId": "Order", "Match": { "Path": "/swagger-json/Order/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Order" } ] }, "Profile": { "ClusterId": "Profile", "Match": { "Path": "/api/profile/{**catch-all}" } }, "ProfileSwagger": { "ClusterId": "Profile", "Match": { "Path": "/swagger-json/Profile/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Profile" } ] }, "Payment": { "ClusterId": "Payment", "Match": { "Path": "/api/payment/{**catch-all}" } }, "PaymentSwagger": { "ClusterId": "Payment", "Match": { "Path": "/swagger-json/Payment/swagger/v1/swagger.json" }, "Transforms": [ { "PathRemovePrefix": "/swagger-json/Payment" } ] } }, "Clusters": { "AuthServer": { "Destinations": { "AuthServer": { "Address": "http://localhost:44381/" } } }, "Administration": { "Destinations": { "Administration": { "Address": "http://localhost:44351/" } } }, "Gdpr": { "Destinations": { "Gdpr": { "Address": "http://localhost:44330/" } } }, "Language": { "Destinations": { "Language": { "Address": "http://localhost:44374/" } } }, "Chat": { "Destinations": { "Chat": { "Address": "http://localhost:44374/" } } }, "ContentManagement": { "Destinations": { "ContentManagement": { "Address": "http://localhost:44388/" } } }, "DocumentManagement": { "Destinations": { "DocumentManagement": { "Address": "http://localhost:44386/" } } }, "FormManagement": { "Destinations": { "FormManagement": { "Address": "http://localhost:44319/" } } }, "Email": { "Destinations": { "Email": { "Address": "http://localhost:44310/" } } }, "Sms": { "Destinations": { "Sms": { "Address": "http://localhost:44392/" } } }, "Notification": { "Destinations": { "Notification": { "Address": "http://localhost:44331/" } } }, "Demo": { "Destinations": { "Demo": { "Address": "http://localhost:44328/" } } }, "FastTrack": { "Destinations": { "FastTrack": { "Address": "http://localhost:44316/" } } }, "Lounge": { "Destinations": { "Lounge": { "Address": "http://localhost:44360/" } } }, "DutyFree": { "Destinations": { "DutyFree": { "Address": "http://localhost:44334/" } } }, "Atu": { "Destinations": { "Atu": { "Address": "http://localhost:44348/" } } }, "Setting": { "Destinations": { "Setting": { "Address": "http://localhost:44367/" } } }, "Yolcu360": { "Destinations": { "Setting": { "Address": "http://localhost:44333/" } } }, "Order": { "Destinations": { "Order": { "Address": "http://localhost:44354/" } } }, "Profile": { "Destinations": { "Profile": { "Address": "http://localhost:44360/" } } }, "Payment": { "Destinations": { "Payment": { "Address": "http://localhost:44372/" } } } } } }Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
Hi,
Sorry about the late reply.
I don't think we can solve the problem like this. If your problem still persists, we can schedule a meeting at a convenient time and look at it together. Is that okay with you?
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
Hi Berkan,
If you hava a time, i'll be really happy. Because it's very important for us.
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post) -
0
Hi,
I missed what you wrote because someone else replied. If you want, we can schedule it for Monday?
Markdown supported.Copy, paste, or drag & drop images and files (max 100 MB per file, 100 MB total per post)


