C# 控件未在第_Init()页的Edge/IE中初始化
根据浏览器品牌,调用控件构造函数的顺序是否不同 在我的项目中有一个DevExpress验证码控件,它在MyForm.aspx页面中呈现。当我在Chrome/Firefox中打开应用程序时,它工作正常,代码属性中有一个随机字符串,但当我在Edge/IE中打开同一页面时,它总是空的(甚至在page_Init中),因此它总是返回false 我想,根据浏览器的不同,调用此控件的构造函数的顺序可能不同,还有什么原因导致此控件在某些浏览器和其他浏览器中未初始化?是的C# 控件未在第_Init()页的Edge/IE中初始化,c#,asp.net,devexpress,C#,Asp.net,Devexpress,根据浏览器品牌,调用控件构造函数的顺序是否不同 在我的项目中有一个DevExpress验证码控件,它在MyForm.aspx页面中呈现。当我在Chrome/Firefox中打开应用程序时,它工作正常,代码属性中有一个随机字符串,但当我在Edge/IE中打开同一页面时,它总是空的(甚至在page_Init中),因此它总是返回false 我想,根据浏览器的不同,调用此控件的构造函数的顺序可能不同,还有什么原因导致此控件在某些浏览器和其他浏览器中未初始化?是的 public partial class
public partial class MyForm: System.Web.UI.Page
{
private string CaptchaCode { get; set; }
protected void Page_Init(object sender, EventArgs e)
{
CaptchaCode = Captcha.Code;
}
protected void btnPurchaseCardSecurity_Click(object sender, EventArgs e)
{
// line breaks added for readability. [ed]
Captcha.IsValid = string.Equals(Request.Params["Captcha$TB"]
.Replace('o', '0').Replace('i', 'l'), CptCode,
StringComparison.CurrentCultureIgnoreCase);
}
下面是aspx中的控件
<dx:ASPxCaptcha ID="Captcha" runat="server">
<ChallengeImage />
</dx:ASPxCaptcha>
我仍在努力使Edge/IE能够正常工作,但到目前为止,我已经发现了导致问题的原因。如果web.config requiresl设置为true,则当您通过HTTP而不是HTTP协议访问页面时,DevExpress验证码组件可能无法工作。所以现在,一切都是通过HTTP显示的,它只是没有在Edge服务器端传输captcha UI的初始化值,但在Chrome和Firefox中传输 我无法使用HTTPS访问该网站 在web.config中设置RequireSSL时,ASPxCaptcha不能与HTTP一起使用 当web.config中的RequireSSL设置为True时,ASPxCaptcha不能与HTTP一起工作,因为在这种情况下cookie是安全的,并且ASPxCaptcha无法获取存储在其中的会话ID。 因此,在这种情况下有必要使用HTTPS 对于所有有类似问题的人,请查看此链接以了解其他可能的解决方案:
其中一个有用的方法是进入project properties>Web>Servers,并将项目URL的HTTP从项目URL替换为HTTPS。VS要求我安装SSL证书。通过https访问站点,一切正常 如果你有疑问,你可以很容易地测试一下你自己的顺序是什么。不必浪费时间问问题。只需附加调试器并设置断点。或者添加日志记录。除了我提到的东西,我没有发现任何东西,在调试过程中可能会发生一些不明显的事情。如果设置断点,你会发现关于顺序是否随不同浏览器而变化的问题的明确答案。当然,我设置了这些,并且顺序是相同的,但是值不是,浏览器如何影响服务器端的内容?我已经解决了这个问题,答案如下。