C# MelonJS和ASP.NET:在内容文件上启用HTTP GET

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,但没有解决

我是triyng,想在ASP.NETMVC4Razor页面上运行一个MelonJS小游戏。首先,我认为不需要任何MelonJS知识就可以解决这个问题(只有MVC4)

问题是:

有一刻,MelonJS需要从服务器加载一些文件(我将这些文件放在Content/data/[…]/file.ext中)。为此,它在
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类型,但我现在失败了。