获取JavaScript运行时错误:irrationalPath,这是什么意思?

时间:2016-01-15 07:33:04

标签: javascript dojo arcgis httpcontext arcgis-js-api

在我的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 ? 什么是“ 无法评估表达式,因为代码已优化或本机框架位于调用堆栈之上。 ”实际上是什么意思?

有关如何有效地解决这个问题的任何建议?

我已经看到在http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.3

的javascript文件中定义了IrrationalPath异常

2 个答案:

答案 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";