2

別のディレクトリにいくつかの javascript、画像、および css を含む html ファイルがあります。そのファイルを自分のサイトで使用し、ユーザーがその index.html リンクにアクセスできるように制限したいと考えています。コントローラーアクションで return File メソッドを使用しましたが、そのディレクトリの画像を開くことができなかったため、機能しませんでした。適切な解決策は何ですか?アイデアはありますか?

ps。(コードをデバッグしたとき、js、css、および html ファイルは、jpg または png ファイルを除く適切な MIME タイプで開くことができることがわかりました)

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;
 }
4

2 に答える 2

0

デバッグ プロセス中に、次の値がイメージ拡張機能に返されることを確認します。

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

各ファイル拡張子がその MIME タイプにマップされている xml ファイルを使用できます。これにより、システムが可能なすべての拡張子を処理できるようになります。このリンクには、推奨される xml ファイルがあります

于 2012-12-14T17:44:39.377 に答える
0

静的コンテンツの MIME タイプについて IIS を照会するだけでよいでしょう。そうすれば、それらを管理する場所が 1 か所になります。

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"];
于 2012-12-14T21:17:11.183 に答える