C# MelonJS和ASP.NET:在内容文件上启用HTTP GET
我是triyng,想在ASP.NETMVC4Razor页面上运行一个MelonJS小游戏。首先,我认为不需要任何MelonJS知识就可以解决这个问题(只有MVC4) 问题是: 有一刻,MelonJS需要从服务器加载一些文件(我将这些文件放在Content/data/[…]/file.ext中)。为此,它在C# MelonJS和ASP.NET:在内容文件上启用HTTP GET,c#,asp.net-mvc-4,melonjs,C#,Asp.net Mvc 4,Melonjs,我是triyng,想在ASP.NETMVC4Razor页面上运行一个MelonJS小游戏。首先,我认为不需要任何MelonJS知识就可以解决这个问题(只有MVC4) 问题是: 有一刻,MelonJS需要从服务器加载一些文件(我将这些文件放在Content/data/[…]/file.ext中)。为此,它在localhost:XXXX/%EveryThingIWant/file.ext%上为每个文件执行一个HTTP GET。 当然,它失败了。我尝试启用DirectoryBrowsing,但没有解决
localhost:XXXX/%EveryThingIWant/file.ext%上为每个文件执行一个HTTP GET。
当然,它失败了。我尝试启用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类型,但现在失败了。有可能吗?看看这篇文章。它涵盖了
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文件夹)中,我必须在global Web.config中添加:
<?xml version="1.0"?>
<configuration>
<security>
<requestFiltering>
<hiddenSegments>
<remove segment="App_Data" />
</hiddenSegments>
</requestFiltering>
</security>
</configuration>
通过这些修改,HTTP GET在我的资源上运行良好。当你说它失败时,你会得到什么错误?你可以在这里的答案中看到一些更简洁的解决方法的例子:@渐近错误:如果我不添加我的脏解决方案,因为MelonJS执行HTTP GET on nothing,它会返回404。我正在寻找其他链接,谢谢!我的解决方案有效!当然,它可以改进(通过try/catch等),但我正在寻找另一种解决方案。我想知道有一个没有代码,但关于配置。例如,启用DirectoryBrowsing并添加MIME类型,但我现在失败了。我的解决方案有效!当然,它可以改进(通过try/catch等),但我正在寻找另一种解决方案。我想知道有一个没有代码,但关于配置。例如,启用DirectoryBrowsing并添加MIME类型,但我现在失败了。