检索输入类型=密码Request.Form [“strPassword”]给出null

时间:2009-08-28 19:51:31

标签: asp.net html forms coldfusion request.form

是否有任何特殊注意事项尝试从HTML表单中读取数据,其中元素是输入类型=“密码”?当ColdFusion页面使用表单数据POST我的处理程序时,我的密码为null而不是键入的值。

以下是较大块的关键行:

string password = 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”];

... password = null

在即时窗口中,果然:

?context.Request.Form["strPassword"]
null

如果我在调试器中检查整个Form集合,我会看到正确的值(由&amp;分隔),并且没有任何重要的数据元素为null (但奇怪的是,数据前面包含一个加号(等号)!以下是来自immed窗口的片段:

&amp; strUsername = johna&amp; strPassword + = xxxxxxxx&amp; strDomain + = cbmiweb}

我有一个ASP.NET客户端POST到这个相同的HTTPHandler,并且工作正常。这里相同的表格数据显示没有干扰的PLUS标志:

&amp; strUsername = johna&amp; strPassword = xxxxxxxx&amp; strDomain = cbmiweb}

关于导致此问题的原因以及如何使用插入的PLUS标志格式化表格数据的任何想法?

编辑: ASP.NET表单和ColdFusion表单都指定了enctype =“multipart / form-data”,而后者嵌入了这些PLUS符号。

1 个答案:

答案 0 :(得分:1)

加号是问题,它不应该在那里,你的冷冻转发请求到你的页面还是正在使用它的内部http请求引擎这样做?

由于空白区域出现加号,如果任何字符串连接导致在您发布的数据中插入空格,请检查您的coldfusion?