我在IIS中安装了一个ASP.NET 5应用程序作为默认网站下的虚拟应用程序。我们将说这个应用程序的虚拟路径是'/ MyVirtualApp'。我在应用程序的一个控制器上修改了路由,以便路由为:
[Route("MyVirtualApp/[controller]")]
控制器及其操作响应如下请求:
http://localhost/MyVirtualApp/MyController/MyAction/
问题是我的“_Layout.cshtml”中添加的脚本和css不尊重虚拟应用程序路径。这些文件试图像这样加载:
http://localhost/css/site.css
_Layout.cshtml文件中的代码如下所示,用于引用的css文件:
<link rel="stylesheet" href="~/css/site.css" />
根据我的理解,这应该产生一个相对路径,但它只相对于默认站点,而不是虚拟应用程序。
如何加载我的javascript和css文件以便它们引用虚拟应用程序路径?
答案 0 :(得分:0)
您的应用程序仍然保留在相同的基本应用程序路径http://localhost
中,并且使用[Route()]
您只修改路由。但是,有关虚拟应用程序/目录的httpPlatformHandler
存在问题。这已经修复并设置为使用RC2发布。
目前的解决方法是:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.Map("/MyVirtualApp", map => ConfigureMyVirtualApp(map, env, loggerFactory));
}
public void ConfigureMyVirtualApp(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.MinimumLevel = LogLevel.Information;
loggerFactory.AddConsole();
loggerFactory.AddDebug();
// Add the platform handler to the request pipeline.
app.UseIISPlatformHandler();
app.UseDefaultFiles();
// Configure the HTTP request pipeline.
app.UseStaticFiles();
}
如果这不起作用,请确保在 applicationhost.config 中正确设置了虚拟应用程序路径。在asp.net核心中,IIS Express的项目源中的.vs\config
文件夹中有一个,IIS中的C:\Users\USERNAME\Documents\IISExpress\config
中有一个。
我希望有所帮助。