MelonJS和ASP.NET:对内容文件启用HTTP GET

本文关键字:文件 启用 HTTP GET ASP NET MelonJS | 更新日期: 2023-09-27 18:29:52

我打算在ASP.NET MVC 4 Razor页面中运行一个小的MelonJS游戏。首先,我认为在没有任何MelonJS知识的情况下修复这个问题是可能的(只有MVC 4)。

问题是:

有一次,MelonJS需要从服务器加载一些文件(我把文件放在Content/data/[..]/file.ext中)。为此,它在localhost:XXXX/%EveryThingIWant/file.ext%. 上为每个文件执行HTTP GET

当然,它失败了。我尝试启用目录浏览,但它没有解决问题。为了让它快速工作,我这样做了(我并不为此感到骄傲,这只是一个快速解决方案):

我在我的一个控制器中创建了一个新操作:

    //
    // GET: /Game/Data
    public FileResult Data(string path)
    {
        string physicalPath = Server.MapPath("~/Content/" + path);
        byte[] fileByte = null;
        using (FileStream fs = new FileStream(physicalPath, FileMode.Open))
        {
            fileByte = new byte[fs.Length];
            fs.Read(fileByte, 0, (int)fs.Length);
        }
        var result = new FileContentResult(fileByte, "tmx");
        return result;
    }

我将%EveryThingIWant/file.ext%设置为"Game/Data?path=[..]/file.ext".

它是有效的,但我想知道是否没有更好的解决方案来实现这一点。是否将文件放在其他文件夹中?我尝试启用目录浏览并添加MIME类型,但现在失败了。有可能吗?

MelonJS和ASP.NET:对内容文件启用HTTP GET

看看这篇关于如何将文件作为响应返回的文章。它涵盖了FileResult及其子类以及从基本控制器继承的File方法。

我不知道这是否是一个好方法,但这就是我最终所做的:

-我把数据放在一个特定的文件夹中(我选择了App_data,但我不知道它是否适合)

-我在这个文件夹中放了一个Web.config,其中包含以下内容:

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <directoryBrowse enabled="true" />
    <staticContent>
      <mimeMap fileExtension=".tmx" mimeType="text/plain" />
    </staticContent>
  </system.webServer>
</configuration>

(我想我必须指定所有自定义扩展)

-在我的情况下(App_Data文件夹),我必须在全局Web.config中添加:

<?xml version="1.0"?>
<configuration>
  <security>
    <requestFiltering>
      <hiddenSegments>
        <remove segment="App_Data" />
      </hiddenSegments>
    </requestFiltering>
  </security>
</configuration>

经过这些修改,我的资源上的HTTPGET运行良好。