IIS上的POST to.apk返回HTTP 200,无需下载。使用StaticFileModule和正确的MIME类型

IIS上的POST to.apk返回HTTP 200,无需下载。使用StaticFileModule和正确的MIME类型,http,iis,module,Http,Iis,Module,我应该使用哪个IIS模块将二进制文件下载到客户端 我有一个无法修改的继承应用程序,它试图将APK文件下载到Android设备 该应用程序向IIS7发出POST请求,我已经为APK文件配置了MIME类型。我尝试了“application/octet-stream”和“application/vnd.android.package-archive”。如果我尝试GET请求,这两种mime类型都可以工作 现在来看有趣的部分:为了接受对.apk扩展的动词后请求,我为StaticFileModule创建了一

我应该使用哪个IIS模块将二进制文件下载到客户端

我有一个无法修改的继承应用程序,它试图将APK文件下载到Android设备

该应用程序向IIS7发出POST请求,我已经为APK文件配置了MIME类型。我尝试了“application/octet-stream”和“application/vnd.android.package-archive”。如果我尝试GET请求,这两种mime类型都可以工作

现在来看有趣的部分:为了接受对.apk扩展的动词后请求,我为StaticFileModule创建了一个模块映射。映射不限于文件或目录,接受POST和GET谓词,并且需要读取访问

我假设StaticFileModule将允许对任何类型的文件进行请求,而IIS将在不进行处理的情况下返回该文件——事实证明并非如此

StaticFileModule不返回文件,它只接受请求并返回状态200。GET和POST做同样的事情。如果我为GET请求禁用该模块,IIS将使用不同的模块,并且下载适用于GET。但是,如果我禁用POST,下载将不起作用(模块也不会激活),我会得到一个405“不允许使用HTTP谓词访问此页面”

为什么默认的StaticFile处理程序映射(*)在接受“所有谓词”时不允许POST?而且它对GET请求没有问题?但是,当我定义自己的处理程序时,它不会为任何一个谓词返回任何内容


我想补充一点,如果我将模块映射更改为仅在请求映射到文件、文件夹或文件或文件夹时调用处理程序,则模块映射似乎不会应用于我的请求。这对我来说毫无意义。
我正在使用URL重写,但前提是{REQUEST_FILENAME}不是文件,也不是目录。重写不适用(它重写到index.php,这样我就知道它是否适用了)。

我最终编写了自己的托管处理程序,因为我在web上还没有找到有效的解决方案

定义没有帮助StaticFileModule提供APK文件,使用这里的优秀指南编写我自己的处理程序非常容易:

在处理程序中,我检查文件是否存在,创建一个流,将流写入response.OutputStream,这就是它的全部内容