gpt4 book ai didi

c# - 在 ASP.NET 4.5 项目中使用 wwwroot 文件夹(ASP.NET Core 样式)

转载 作者:IT王子 更新时间:2023-10-29 04:24:09 26 4
gpt4 key购买 nike

我非常喜欢新的 asp.net (asp.net 5\core 1.0) web 应用程序的方法,其中 wwwroot 文件夹是根文件夹,并且只提供其中的静态文件。

可以通过路由或其他配置让 wwwroot 文件夹在 asp.net 4.5 项目中以类似的方式运行,这样静态文件只从中提供,并且它是静态 webapp 的“根”文件?

(我提出这个问题的部分动机是我在 VS2015 的 asp.net 5 项目中托管了一个角度应用程序,但我需要将其移至 asp.net 4.5 项目中,但我想保留现有的磁盘结构)

尝试使用 OWIN

我尝试使用一个空的 ASP.NET 4.5 Web 应用程序项目和 OWIN 进行此操作。所以我的文件夹结构有我的角度应用程序,在项目文件夹的 wwwroot 文件夹中有一个主要的 index.html 文件。项目的根目录中没有 HTML 文件。

我已经通过 nuget 和以下启动文件添加了 OWIN:

[assembly: OwinStartup(typeof(MyApp.UI.Startup))]
namespace MyApp.UI
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
string root = AppDomain.CurrentDomain.BaseDirectory;
var physicalFileSystem = new PhysicalFileSystem(Path.Combine(root, "wwwroot"));
var options = new FileServerOptions
{
EnableDefaultFiles = true,
FileSystem = physicalFileSystem
};
options.StaticFileOptions.FileSystem = physicalFileSystem;
options.StaticFileOptions.ServeUnknownFileTypes = false;
options.DefaultFilesOptions.DefaultFileNames = new[] {"index.html"};
app.UseFileServer(options);
}
}
}

虽然这失败了——当我运行它时我的 index.html 文件的源代码确实加载了,但是它引用的所有 css、js 等文件都失败并返回 404。更糟糕的是,如果我将 gulpfile.js 附加到root url 它从项目文件夹的根目录加载我的 gulp 文件。这正是我要避免的事情。

有什么想法吗?

最佳答案

我相信我现在有一个可行的方法来做到这一点。进行了一些谷歌搜索和实验,但最后我想到了以下过程:

  1. 在 VS2015 中创建一个新的 ASP.NET 4.5 项目,选择空模板

  2. 通过 nuget 添加 OWIN 引用(Install-Package Microsoft.Owin.Host.SystemWebMicrosoft.Owin.StaticFiles)

  3. 添加一个类似这样的启动文件:

    [assembly: OwinStartup(typeof(MyApp.Startup))]
    namespace MyApp.UI
    {
    public class Startup
    {
    public void Configuration(IAppBuilder app)
    {
    string root = AppDomain.CurrentDomain.BaseDirectory;
    var physicalFileSystem = new PhysicalFileSystem(Path.Combine(root, "wwwroot"));
    var options = new FileServerOptions
    {
    RequestPath = PathString.Empty,
    EnableDefaultFiles = true,
    FileSystem = physicalFileSystem
    };
    options.StaticFileOptions.FileSystem = physicalFileSystem;
    options.StaticFileOptions.ServeUnknownFileTypes = false;
    app.UseFileServer(options);
    }
    }
    }
  4. 将以下内容添加到您的 web.config 文件,以防止 IIS 提供您不希望它提供的静态文件,并强制所有内容通过 OWIN 管道:

    <system.webServer>
    <handlers>
    <remove name="StaticFile"/>
    <add name="Owin" verb="" path="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb"/>
    </handlers>
    </system.webServer>

我总是乐于接受有关如何执行此操作的更好建议,但这至少似乎对我有用。

关于c# - 在 ASP.NET 4.5 项目中使用 wwwroot 文件夹(ASP.NET Core 样式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36294188/

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