尝试从元素为输入类型 =“密码”的 HTML 表单中读取数据时是否有任何特殊注意事项?当 ColdFusion 页面向我的处理程序发送表单数据时,我得到的密码为空,而不是键入的值。
这是下面较大块的关键行:
字符串密码 = context.Request.Form["strPassword"];
我有一个 HTTPHandler.ashx 代码文件,它在发布时执行文件的上传。这是此代码的关键片段:
string username = context.Request.Form["strUsername"];
if (String.IsNullOrEmpty(username))
{
IdentifyInvoker = GetUserInfo();
brokerService = new Broker.FileService();
}
else
{
string password = context.Request.Form["strPassword"];
string domain = context.Request.Form["strDomain"];
IdentifyInvoker = GetInvokerInfoFromForm(username, password, domain);
brokerService = new Broker.FileService(username,password,domain);
}
发布上述代码的表单(来自 ColdFusion)如下所示:
<b>User Name</b> <input type="text" name="strUsername" id="strUsername" size="13" />
<b>Password</b> <input type="Password" name="strPassword" id="strPassword" size="15" />
<b>Domain</b> <input type="text" name="strDomain" id="strDomain" size="13" value="cbmiweb" />
我能够用调试器捕捉到这一点,然后震惊地看到: string password = context.Request.Form["strPassword"];
...密码=空
在即时窗口中,果然:
?context.Request.Form["strPassword"]
null
如果我在调试器中检查整个 Form 集合,我会看到布局正确的值(由 & 分隔),并且没有一个重要的数据元素为空(但奇怪的是,数据在等号前面包含一个加号)!这是来自即时窗口的片段:
&strUsername=johna&strPassword+=xxxxxxxx&strDomain+=cbmiweb}
我有一个 ASP.NET 客户端,它发布到同一个 HTTPHandler 并且工作正常。这里显示相同的表格数据,没有干扰加号:
&strUsername=johna&strPassword=xxxxxxxx&strDomain=cbmiweb}
关于导致此问题的原因以及在使用中间加号格式化表单数据时如何检索表单数据的任何想法?
编辑:ASP.NET 表单和 ColdFusion 表单都指定 enctype="multipart/form-data" 但后者嵌入了这些加号。