gpt4 book ai didi

asp.net-core - 带有虚拟目录/应用程序的 ASP.NET 5 beta8 应用程序

转载 作者:行者123 更新时间:2023-12-03 18:11:13 28 4
gpt4 key购买 nike

自 ASP.NET 5 beta8 以来,我们在使用虚拟目录和/或子应用程序时遇到问题。

我们希望(暂时)从虚拟目录或“子应用程序”提供图像。但是,我们在尝试使用虚拟目录时只会收到 404 错误,在使用“子应用程序”时会收到 502.3 错误。服务器正在运行 IIS 8.0。该站点的应用程序池和“子应用程序”设置为“无托管代码”。

enter image description here

在另一个运行我们站点“旧”ASP.NET 4 版本的站点上使用相同配置的虚拟目录/应用程序按预期工作。问题是升级到 beta8 后出现的,所以我们假设它与 HttpPlatformHandler 有关。

我们是否遗漏了什么或者这是一个错误?

编辑:澄清一下,ASP.NET5 应用程序工作正常。只有来自虚拟目录/应用程序的内容无法访问。服务器上安装了 HttpPlatformHandler。

这是我们当前的 Startup.cs

public class Startup
{
public Startup(IHostingEnvironment env, IApplicationEnvironment appEnv)
{
var builder = new ConfigurationBuilder()
.SetBasePath(appEnv.ApplicationBasePath)
.AddJsonFile("appsettings.json")
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true);

builder.AddEnvironmentVariables();
Configuration = builder.Build();
}

public IConfigurationRoot Configuration { get; set; }

public IServiceProvider ConfigureServices(IServiceCollection services)
{
services.ConfigureXXXXXXIdentityServices(); // Custom identity implementation

services.AddMvc(options =>
{
options.OutputFormatters
.Add(new JsonOutputFormatter(new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
}));
});

services.AddSqlServerCache(options =>
{
options.ConnectionString = "XXXXXX";
options.SchemaName = "dbo";
options.TableName = "AspNet5Sessions";
});

services.AddSession();

var builder = new ContainerBuilder();
builder.RegisterModule(new AutofacModule());
builder.Populate(services);

var container = builder.Build();

return container.Resolve<IServiceProvider>();
}

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.MinimumLevel = LogLevel.Debug;
loggerFactory.AddConsole();
loggerFactory.AddDebug();

if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();

app.UseFileServer(new FileServerOptions
{
RequestPath = new PathString("/gfx"),
FileProvider = new PhysicalFileProvider(@"\\webdata2.XXXXXX.se\webdata\gfx"),
EnableDirectoryBrowsing = false
});

app.UseFileServer(new FileServerOptions
{
RequestPath = new PathString("/files"),
FileProvider = new PhysicalFileProvider(@"\\webdata2.XXXXXX.se\webdata"),
EnableDirectoryBrowsing = false
});
}
else
{
app.UseExceptionHandler("/Error/Index");
}

app.UseIISPlatformHandler();

app.UseStaticFiles();

app.UseIdentity();

app.UseSession();

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
}

app.UseFileServer() 语句可在我们的开发机器上运行,但不能在服务器上使用,除非有指定凭据的方法。 (还没有找到办法做到这一点......(还......))

最佳答案

得到它“工作”。

  • 删除了所有虚拟目录和/或应用程序。
  • 将应用程序池用户更改为有权读取另一台计算机上的文件共享的用户。
  • 已将 app.UseFileServer() 添加到所需路径的所有环境中。

感觉应该有一个选项可以将网络凭证传递给 UseFileServer 方法...

关于asp.net-core - 带有虚拟目录/应用程序的 ASP.NET 5 beta8 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33253608/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com