我正在使用Visual Studio 2012构建一个Web应用程序.我正在尝试将字数添加到我的文本框中.但是在添加了javascript代码和html代码之后.我收到上述错误.
这是我的javascript编码
代码:
function validateLimit(obj, divID, maxchar) {
objDiv = get_object(divID);
if (this.id) obj = this;
var remaningChar = maxchar - trimEnter(obj.value).length;
if (objDiv.id) {
objDiv.innerHTML = remaningChar + " characters left";
}
if (remaningChar <= 0) {
obj.value = obj.value.substring(maxchar, 0);
if (objDiv.id) {
objDiv.innerHTML = "0 characters left";
}
return false;
}
else
{ return true; }
}
function get_object(id) {
var object = null;
if (document.layers) {
object = document.layers[id];
} else if (document.all) { …Run Code Online (Sandbox Code Playgroud) 我正在使用WIF(.net 4.5)和Azure Active目录进行身份验证.该网站将位于Azure上.
一切都在本地工作,但是当我把它放到azure上时我得到错误:
数据保护操作失败.这可能是由于没有为当前线程的用户上下文加载用户配置文件引起的,这可能是线程模拟时的情况.
我理解这是因为应用程序无法使用DAPI,因此我需要切换到使用MAC保护我的应用程序.
在本地我把它添加到我的webconfig: -
<securityTokenHandlers>
<remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</securityTokenHandlers>
Run Code Online (Sandbox Code Playgroud)
正如文档中所建议的,我添加了一个静态机器密钥,但我找不到关于密钥长度的任何建议 - 所以我假设256.
但是,此配置只会出现此错误:
[CryptographicException:加密操作期间发生错误.] System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.HomogenizeErrors(Func`2 func,Byte [] input)+115 System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.Unprotect(Byte [] protectedData)+59 System.Web.Security.MachineKey.Unprotect(ICryptoServiceProvider cryptoServiceProvider,Byte [] protectedData,String []用途)+62 System.Web.Security.MachineKey.Unprotect(Byte [] protectedData,String []用途)+ 122 System.IdentityModel.Services.MachineKeyTransform.Decode(Byte [] encoded)+161 System.IdentityModel.Tokens.SessionSecurityTokenHandler.ApplyTransforms(Byte [] cookie,Boolean outbound)+123 System.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(XmlReader reader) ,SecurityTokenResolver tokenResolver)+575 System.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(Byte [] token,SecurityTokenResolver tokenResolver)+76 System.IdentityModel.Services.SessionAuthenticationMod ule.ReadSessionTokenFromCookie(Byte [] sessionCookie)+833 System.IdentityModel.Services.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken&sessionToken)+186 System.IdentityModel.Services.SessionAuthenticationModule.OnAuthenticateRequest(Object sender,EventArgs eventArgs)+210 System.Web.SyncEventExecutionStep. System.Web.HttpApplication.IExecutionStep.Execute()+ 136 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean&completedSynchronously)+69
我删除了machinekey部分,因为我没有指定格式正确的密钥,但错误不会消失.
什么是战斗WIF!
我的Global.aspx中有以下内容用于处理错误:
void Application_Error(object sender, EventArgs e)
{
Exception exception = Server.GetLastError();
if (exception != null)
{
//Log
if (HttpContext.Current.Server != null)
{
HttpContext.Current.Server.Transfer("/siteerror.aspx");
}
}
}
Run Code Online (Sandbox Code Playgroud)
这在很大程度上起作用,但有时不会进入Server.Transfer.由于某种原因,HttpContext.Current.Server为null.我想出了这种情况发生的地方:用户控件和业务逻辑类中发生错误.我在这里错过了什么吗?
谢谢