当.NET HttpModule RewritePath调用的目标是PHP文件时,$\u POST数组为空

当.NET HttpModule RewritePath调用的目标是PHP文件时,$\u POST数组为空,php,asp.net,iis,httpmodule,rewritepath,Php,Asp.net,Iis,Httpmodule,Rewritepath,我们有一个在IIS 6上运行的应用程序,它使用一个自定义的HttpModule重写URL。除了Context.RewritePath目标是一个.php文件的情况外,这非常有效(我们做得很好)。php文件按预期执行,但是$\u POST集合为空,这意味着它无法访问提交到重写URL的任何表单。当作为请求重写到.aspx文件时,不存在此问题。表单集合可以 因此,我的问题分为两部分: 为什么$u POST集合没有被填充? 有没有办法确保重写后正确填充.php$\u POST集合 我没有太多代码可以展示。

我们有一个在IIS 6上运行的应用程序,它使用一个自定义的HttpModule重写URL。除了Context.RewritePath目标是一个.php文件的情况外,这非常有效(我们做得很好)。php文件按预期执行,但是$\u POST集合为空,这意味着它无法访问提交到重写URL的任何表单。当作为请求重写到.aspx文件时,不存在此问题。表单集合可以

因此,我的问题分为两部分: 为什么$u POST集合没有被填充? 有没有办法确保重写后正确填充.php$\u POST集合

我没有太多代码可以展示。这里有一个简单的问题:

context.RewritePath(newPath);
一旦HttpModule确定了发送请求的位置

编辑:
有趣的是,如果我做
var\u dump(file\u get\u contents('php://input'));
在PHP文件(方法)中显示表单的内容。因此,数据到达的是PHP脚本,而不是$\u POST数组。

重定向将POST操作转换为GET操作,这意味着最初发送的任何POST参数都将丢失。您必须使用反向通道方法(例如会话)来传递变量。

感谢您的快速回答。为什么.aspx页面可以访问表单集合,而.php文件却不能?我的猜测是ASP.NET透明地实现了反向通道。很好的旧ASP.NET。有趣的是调用file\u get\u contents('php://input“)表明POST数据正在以某种方式通过。只是没有填充$\u POST数组。
$\u服务器[“请求方法”]
提供了什么?如果它不是
POST
,那么它可能不会尝试获取参数。是的,正如您上面所建议的,它被标记为GET。我已经找到了一个解决办法,但遗憾的是,当表单包含文件上传时,它就不起作用了,我们中的一些人就是这样做的。呵呵。再次感谢您的时间和关注。