【问题标题】:Scripts and CSS file don't load for virtual application (asp.net 5)不为虚拟应用程序加载脚本和 CSS 文件 (asp.net 5)
【发布时间】:2016-05-28 03:07:03
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您的应用程序仍保留在相同的基本应用程序路径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 core 中,您的项目源中的 .vs\config 文件夹中有一个用于 IIS Express,在 C:\Users\USERNAME\Documents\IISExpress\config 中用于 IIS。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多