【发布时间】:2014-03-04 20:16:39
【问题描述】:
我使用哪个 IIS 模块将二进制文件下载到客户端?
我有一个无法修改的继承应用程序,它尝试将 APK 文件下载到 Android 设备。
应用程序向 IIS 7 发出 POST 请求,我为 APK 文件配置了 MIME 类型。我尝试了“application/octet-stream”和“application/vnd.android.package-archive”。如果我尝试 GET 请求,这两种 mime 类型都可以工作。
现在是有趣的部分:为了接受对 .apk 扩展的 POST-verb 请求,我为 StaticFileModule 创建了一个模块映射。映射不限于文件或目录,接受 POST 和 GET 动词,并且需要读取权限。
我假设 StaticFileModule 将允许对任何类型的文件的请求,而 IIS 将返回该文件而不进行处理 - 事实证明这是不正确的。
StaticFileModule 不返回文件,它只是接受请求并返回状态 200。GET 和 POST 做同样的事情。如果我禁用 GET 请求的模块,IIS 将使用不同的模块,并且下载适用于 GET。但是,如果我禁用 POST,下载将不起作用(并且模块不会激活),我会收到 405“不允许用于访问此页面的 HTTP 动词”。
为什么默认的 StaticFile 处理程序映射 (*) 在接受“所有动词”时不允许 POST - 而且 GET 请求没有问题 - 但是当我定义自己的处理程序时,它不会发回任何内容哪个动词?
我想补充一点,如果我将模块映射更改为仅在请求映射到 file、folder 或 文件或文件夹时调用处理程序 em>,模块映射似乎不适用于我的请求。这对我来说没有意义。 我正在使用 URL 重写,但前提是 {REQUEST_FILENAME} 不是文件,并且不是目录。重写不适用(它会重写为 index.php,所以我会知道它是否适用)。
【问题讨论】: