通过IIS 10中的主应用程序访问子Web应用程序资源时,端口号被附加到基URL

vnjpjtjt  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(120)

总之,我在IIS 10中的Web表单应用程序下托管了一个dotnet core(net 6)应用程序。Net核心应用程序被创建为WebSite(Webforms)下的Web应用程序。请参阅下面的详细信息-webforms应用程序中的net 6端点出于某种原因将端口号附加到基本url,如下所示

基本URLhttps://baseurl.site

关闭netcore端点:https://baseurl.site/netcore/get

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

IIs设置IIs版本:10 Windows Sever 2022
Net 6应用程序托管在进程中
net 6和webforms应用程序都在两个不同的应用程序池中运行
net 6的Web.config中有ASPNETCORE_HTTPS_PORT4340的值,但删除该值并不能解决问题
请参阅IIS设置和net 6Program.cs、Startup.cs了解网站和Web应用程序

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");
    
    
    }

如果你能告诉我去哪里找我会很感激的。已经花了几个小时在这上面了,但是没有用。

8cdiaqws

8cdiaqws1#

将端口号更改为80是http,否则443是https。这些是默认端口,不会附加到url中

相关问题