我正在运行一个小的MelonJS游戏在一个ASP.NET MVC 4 Razor。首先,我认为可以在没有任何MelonJS知识(只有MVC 4)的情况下修复这个问题。
问题是:
有一次,MelonJS需要从服务器加载一些文件(我将文件放在内容/data/../file.ext中)。为此,它对localhost:XXXX/%EveryThingIWant/file.ext%.上的每个文件执行HTTP
当然,它失败了。我试图启用DirectoryBrowsing,但它没有解决问题。为了让它快速工作,我做了这个(我不为它感到骄傲,它只是一个快速修复):
我在我的一个控制器中创建了一个新动作:
//
// 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“。
这是可行的,但我想知道是否没有更好的解决方案来执行。把文件放到另一个文件夹里?我试图启用DirectoryBrowsing并添加MIME类型,但现在我失败了。有可能吗?
发布于 2013-09-02 08:30:10
我不知道这是不是好办法,但我终于做到了:
-I将数据放在一个特定的文件夹中(我选择了App_Data,但不知道这是否合适)
-I在这个文件夹中放置了一个包含该内容的Web.config:
<?xml version="1.0"?>
<configuration>
<system.webServer>
<directoryBrowse enabled="true" />
<staticContent>
<mimeMap fileExtension=".tmx" mimeType="text/plain" />
</staticContent>
</system.webServer>
</configuration>(我想我必须指定所有自定义扩展)
-In my case (App_Data文件夹),我必须在全局Web.config中添加:
<?xml version="1.0"?>
<configuration>
<security>
<requestFiltering>
<hiddenSegments>
<remove segment="App_Data" />
</hiddenSegments>
</requestFiltering>
</security>
</configuration>通过这些修改,我的资源上的HTTP运行良好。
发布于 2013-09-01 16:53:11
看看这篇关于如何将文件作为响应返回的文章。它涵盖了FileResult及其子类以及从基本控制器继承的File方法。
https://stackoverflow.com/questions/18560238
复制相似问题