asp.net-mvc – 作为静态文件的根目录的项目子目录

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 作为静态文件的根目录的项目子目录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用ASP.NET MVC,我正在使用Visual Studio 2013向导创建一个Web应用程序.它创建几个文件夹从静态文件的服务:内容,脚本等

其他语言(例如TurboGears)的框架仅针对静态内容具有明确的目录,消除了为页面的源代码提供服务的风险,而不是处理这是PHP站点的典型配置错误.

ASP.NET很高兴在应用程序的根目录中提供任何东西,例如http:// localhost:1740 / Project_Readme.html只要它有正确的扩展名.只有Views文件夹受到Web.config的保护.

如何将应用程序配置为使用另一个目录,而不是项目的静态文件的根目录.例如.如果文件favicon.ico被放入内容的子目录中,那么它应该可以访问http:// localhost:1740 / favicon.ico,但是除了控制器返回之外,没有任何内容目录.

这个目录中不应该执行任何操作,也就是说,如果* .cshtml文件放在这个目录下,则文件内容(源代码)应该以文本/普通方式传送.

最终应用程序将在Linux上使用mod_mono运行.

解决方法

更新:

本,

所提出的解决方案仅适用于Owin.要使其在MVC应用程序中工作,您只需使用asp.net MVC 6(部分asp.net core或asp.net 5).但是,使用Web API,您也可以使用旧版本.要设置应用程序,请使用以下步骤:

>使用visual studio模板创建一个空项目(不要选择Web API或MVC)
>将以下Nuget包添加到项目中:

Microsoft.AspNet.WebApi

Microsoft.AspNet.WebApi.Owin

Microsoft.Owin.Host.SystemWeb

Microsoft.Owin.StaticFiles
>添加一个Startup.cs文件,并使用以下命令装饰命名空间

[assembly:OwinStartup(typeof(启动))]

>将以下代码添加到Stratup.cs类中

public void Configuration(IAppBuilder app)
{
    var config = new HttpConfiguration();
    config.MapHttpAttributeRoutes();
    config.Routes.MapHttpRoute(
        name: "DefaultApi",routeTemplate: "api/{controller}/{id}",defaults: new {id = RouteParameter.Optional}
        );
    //Configure the file/ static file serving middleware
    var physicalFileSystem = new PhysicalFileSystem(@".\client");
    var fileServerOptions = new FileServerOptions
    {
        EnableDefaultFiles = true,RequestPath = PathString.Empty,FileSystem = physicalFileSystem
    };

    fileServerOptions.DefaultFilesOptions.DefaultFileNames = new[] {"index.html"};
    fileServerOptions.StaticFileOptions.ServeUnknownFileTypes = true;
    fileServerOptions.StaticFileOptions.FileSystem = physicalFileSystem;
    app.UseFileServer(fileServerOptions);
    app.UseWebApi(config);
}

这应该是魔术.现在您可以在IIS中托管该应用程序. IIS将仅从客户端文件夹提供静态资产.添加服务器文件夹并添加控制器.

Microsoft.Owin.Host.SystemWeb是有助于在IIS中托管Owin应用程序.文件服务选项帮助IIS仅从客户端文件夹提供静态文件.

请让我知道,如果你有任何问题.

根据您的问题,您希望实现的项目结构应如下所示.

基本上你将只有两个文件夹,客户端和服务器.静态文件仅从客户端文件夹提供.服务器文件夹不可访问.如果这是您所需要的,那么可以通过使用静态文件服务中间件的Owin Self Host轻松实现.

自主主机对IIS有任何依赖.但是,如果您计划在Linux上托管此应用程序,则可以使用Asp.NET CORE 1.0.之后如果您决定在Windows中的IIS上托管应用程序,可以通过添加Microsot.Owin.Host.SystemWeb nuget软件包轻松实现.

有关这个话题的很好的博客文章.这是其中之一的link.这是在Asp.NET Core中实现相同的link.

我希望这能解决您的问题,如果您有任何问题,请通知我.

谢谢,索玛.

猜你在找的asp.Net相关文章