在 IIS 10 中访问子 Web 应用程序资源时端口号附加到基本 url

问题描述 投票:0回答:0

全部, 我在 IIS 10 的 webforms 应用程序下托管了一个 dotnet 核心 (net6) 应用程序。 Net core app被创建为WebSite(Webforms)下的Web应用程序。请看下面的详细信息 出于某种原因从 webforms 应用程序访问 net6 端点会将端口号附加到基本 url,如下所示

基本网址https://baseurl.site

访问netcore端点:https://baseurl.site/netcore/get

问题:从 webforms(父应用程序)访问 netcore 资源会导致端口号附加到基本 url,如下所示 https://baseurl.site:44340/netcore/get。这会导致请求失败。 这只发生在生产中 而不是在开发或 QA 中。如果用户从基本 url 中删除端口号,它就可以工作。

IIs设置 IIs 版本:10 Windows 服务器 2022

Net6 应用程序托管在进程中

net6 和 webforms 应用程序都在两个不同的应用程序池下运行

net6 的 Web.config 具有 ASPNETCORE_HTTPS_PORT 44340 的值,但删除它并不能解决问题

请查看 IIS 设置和 net6 Program.cs, Startup.cs 网站和网络应用程序

public class Program
    {        
        public static void Main(string[] args)
        {
            var logger = NLog.LogManager.Setup().LoadConfigurationFromAppSettings().GetCurrentClassLogger();            
            try
            {
                logger.Info("init main");
                CreateHostBuilder(args).Build().Run();
            }
            catch (Exception ex)
            {

                //NLog: catch setup errors
                logger.Error(ex, "Stopped program because of exception");
                throw;
            }
            finally
            {                
                NLog.LogManager.Shutdown();
            }

           
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.UseUrls();
                    webBuilder.UseIISIntegration();

                })
                .ConfigureAppConfiguration((hostingContext, config) =>
                {
                    config.AddJsonFile($"appsettings.local.json", optional: true, reloadOnChange: true);         
                })
                .ConfigureLogging(logging =>
                {
                    logging.ClearProviders();
                    logging.SetMinimumLevel(Microsoft.Extensions.Logging.LogLevel.Trace);
                })
                .UseNLog(); 
    }

Startup.cs

public void ConfigureServices(IServiceCollection services)
    {
      services.AddAuthentication(IISDefaults.AuthenticationScheme).AddNegotiate();
            services.AddAuthorization(options =>
            {
                
                options.FallbackPolicy = options.DefaultPolicy;
            });
            services.AddControllersWithViews().AddRazorRuntimeCompilation();
            services.AddSession();
    }
    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env){
    
    if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");                
                app.UseHsts();
            }

            
            app.UseHttpsRedirection();
            
            app.UseStaticFiles();

            app.UseRouting();
            app.UseSession();
            app.UseAuthentication();
            app.UseAuthorization();
            
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
                endpoints.MapControllerRoute(
                    name: "subsite",
                    pattern: "netcore/{controller=Home}/{action=Index}/{id?}");
            });
            app.UsePathBase("/netcore");
    
    
    }
  

如有任何关于在哪里寻找的指示,我将不胜感激。已经花了几个小时,但无济于事。

asp.net windows iis webforms .net-6.0
© www.soinside.com 2019 - 2024. All rights reserved.