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类型,但现在失败了。有可能吗?
看看这篇关于如何将文件作为响应返回的文章。它涵盖了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运行良好。