虚拟应用程序不加载脚本和CSS文件(asp.net 5)

时间:2016-02-16 17:35:04

标签: c# css .net asp.net-mvc asp.net-core

我在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文件以便它们引用虚拟应用程序路径?

1 个答案:

答案 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中有一个。

我希望有所帮助。