在我的MasterPage中,我使用以下脚本
<script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.3"></script>
在我的应用程序中,我有这种JavaScript代码的和平
document.getElementById(menu_number).src = "<%=HttpContext.Current.Request.ApplicationPath%>/UI/Common/Images/down-arrow.gif";
我还有下面的Application_AcquireRequestState方法
public void Application_AcquireRequestState(object sender, EventArgs e)
{
// Get http context from the caller.
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
// Check for encrypted query string
string encryptedQueryString = context.Request.QueryString["request"];
try
{
if (!string.IsNullOrEmpty(encryptedQueryString))
{
// Decrypt query strings
string cryptoKey = System.Web.HttpContext.Current.Session["CryptoKey" + System.Web.HttpContext.Current.Session["UNIQUEKEY"]] == null ? HttpContext.Current.Application["CryptoKey"].ToString() : System.Web.HttpContext.Current.Session["CryptoKey" + System.Web.HttpContext.Current.Session["UNIQUEKEY"]].ToString();
string decryptedQueryString = CryptoQueryStringHandler.DecryptQueryStrings(encryptedQueryString, cryptoKey);
context.Server.Transfer(context.Request.AppRelativeCurrentExecutionFilePath + "?" + decryptedQueryString);
}
}
catch (Exception ex)
{
}
}
当执行document.getElementById(menu_number).src = "<%=HttpContext.Current.Request.ApplicationPath%>/UI/Common/Images/down-arrow.gif";
时,它会在IE 11中抛出以下错误。
JavaScript运行时错误:irrationalPath
它还在方法“Application_AcquireRequestState”中抛出异常,但我无法获取异常详细信息。当我在方法“Application_AcquireRequestState”中放置try-catch时,返回的异常内部消息是
无法评估表达式,因为代码已优化或本机框位于调用堆栈之上。
我发现很难调试这个。上面的JavaScript行在初始页面加载时成功执行,但在页面加载后单击特定超链接时会抛出该错误。
JavaScript错误的最可能原因是什么:irrationalPath ? 什么是“ 无法评估表达式,因为代码已优化或本机框架位于调用堆栈之上。 ”实际上是什么意思?
有关如何有效地解决这个问题的任何建议?
的javascript文件中定义了IrrationalPath异常答案 0 :(得分:0)
最有可能导致JavaScript错误的原因:irrationalPath错误可能与您在问题中发布的任何代码无关。它是一个dojo错误,通常在dojo加载器出现问题时出现。它可能与dojoConfig中的路径或pacakges设置有关。有关详细信息,请参阅here。
您遇到的另一个错误是.NET错误。如果没有看到更多代码,我无法确定,但this Microsoft support article是排除故障的良好起点
答案 1 :(得分:0)
您是否尝试在js代码中将HttpContext.Current.Request.ApplicationPath
设为字符串(用两个引号分隔)。
js代码成为:
document.getElementById(menu_number).src = <%="'"+HttpContext.Current.Request.ApplicationPath+"'"%>+"/UI/Common/Images/down-arrow.gif";