繁体   English   中英

如何从MVC中的另一个目录打开HTML文件

[英]How to open html file from another directory in mvc

我在另一个目录中有一些html文件,其中包含一些javascript,图像和CSS。 我想在我的网站中使用这些文件,并限制用户访问该index.html链接。 我在控制器操作中使用了return File方法,但无法在该目录上打开图像,因此无法正常工作。 正确的解决方案是什么?您有想法吗?

PS。 (当我调试代码时,我看到js,css和html文件可以使用正确的mime类型(jpg或png文件除外)打开)

public ActionResult User(string name)
{
     string file = (Server.MapPath(Url.Content("~/Content/Users/" + name)));
     string path = Path.Combine(file);
     string mime = GetMimeType(path);
     return File(path, mime);
}



public string GetMimeType(string fileName)
 {
     string mimeType = "application/unknown";
     string ext = Path.GetExtension(fileName).ToLower();
     Microsoft.Win32.RegistryKey regKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext); 
     if (regKey != null && regKey.GetValue("Content Type") != null)
      {
        mimeType = regKey.GetValue("Content Type").ToString();
      }
     return mimeType;
 }

确保在调试过程中将以下值返回到映像扩展名:

.jpg/.jpeg => mime type: image/jpeg, 
 .png => mime type:image/png

您可以使用xml文件,其中每个文件扩展名都映射到其mime类型。 这将确保您的系统可以处理所有可能的扩展。 链接具有建议的xml文件

最好仅查询IIS以获取静态内容mime类型。 这样,您就可以在一个位置管理它们。

using Microsoft.Web.Administration;
//--- stuff goes on ---//


ServerManager serverManager = new ServerManager();
var config = serverManager.GetApplicationHostConfiguration();
var staticContent = config.GetSection("system.webServer/staticContent");
var mimeMap = staticContent.GetCollection();
var mType =mimeMap.FirstOrDefault(a => (string) a.Attributes["fileExtension"].Value == ".pdf");
return (mType == null) ? "text/plain" : mType["mimeType"];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM