【发布时间】:2016-04-09 11:12:27
【问题描述】:
在我的项目中,我有一个 .ashx 页面,它接受来自外部的 POST 请求,并使用以下代码收集一个字符串变量:
string infoPost = httpRequest["infoPost"].ToString();
此代码在我的本地或 IIS 服务器上完美运行。
当我将它发布到我无法控制它的 IIS 服务器时,问题就开始了。不知何故,对象变空了,我得到“对象引用未设置为对象的实例”。这段代码出错了。
我做了一些研究,发现 SecureConnection 设置导致了问题。 IIS 服务器将所有“http”请求转换为“https”,但在执行此操作时会丢失 infoPost 变量。我通过直接用“https”调用这个页面来测试这个想法,这次代码运行良好,我抓住了发布的字符串。
但我不想要硬编码的工作。我试图通过使用以下代码了解网站是否设置为安全连接:
string strSecure = "http://";
if (HttpContext.Current.Request.IsSecureConnection)
strSecure = "https://";
同样,这段代码在我的本地运行良好,但在我提到的 IIS 上不起作用。
抱歉,解释太长了,我的问题很简单:
- 当 IIS 以某种方式将 http 请求重定向到 https 时,它无法在 POST 中传递参数。这是真的吗?我该如何预防?
- 我想了解网站是否在 SecureConnection 上发布,但似乎“HttpContext.Current.Request.IsSecureConnection”代码在 IIS 上不起作用。我的假设正确吗?有没有其他方法可以理解和决定我应该使用哪个标签(http 或 https)?
【问题讨论】:
标签: c# asp.net iis https http-post