C# ASP.net无法注册ClientScriptBlock

C# ASP.net无法注册ClientScriptBlock,c#,asp.net,C#,Asp.net,当我尝试在我的跟踪中注册此脚本时,它会说它未注册,即使我在此处惊叹它的注册: Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "DrillThrough report " + (int) dr["ReportID"] + " script", vbs_script); 脚本文件名为DrillThrough6-0.Function.BT.SS2005.ReportID42193.vbs可能出现的问题。另外,如果我使用开发人员

当我尝试在我的跟踪中注册此脚本时,它会说它未注册,即使我在此处惊叹它的注册:

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "DrillThrough report " + (int) dr["ReportID"] + " script", vbs_script);
脚本文件名为
DrillThrough6-0.Function.BT.SS2005.ReportID42193.vbs
可能出现的问题。另外,如果我使用开发人员工具运行Internet explorer(可能只是巧合,但它经常只在开发人员工具打开的情况下运行),那么它注册良好。按照它的设想运行,否则它根本不会运行

上下文代码:

SqlDataReader dr = PivotTableDB.GetReport(drillThroughReportID);
        Trace.Warn("Attempting to Read... ");
        if (dr.Read()) {
            Trace.Warn("Reading... ");
            Page.ClientScript.RegisterHiddenField("txt_DetailReportCubeName", (string) dr["CubeName"]);

            string path = (string) this.MapPath("~/DesktopModules/PivotTableNav/DrillThroughReportScripts/");
            string name = (string) dr["DisplayName_en"] + ".ReportID" + (int) dr["ReportID"] + ".vbs";
            string vbs_script = "";

            if (File.Exists(path + name)) {

                StreamReader sr = new StreamReader(path + name,System.Text.Encoding.GetEncoding("iso-8859-1"));
                vbs_script = sr.ReadToEnd();
                vbs_script = vbs_script.Replace("Spreadsheet1","document.Form1.Spreadsheet1");
                vbs_script = vbs_script.Replace("for=document.Form1.Spreadsheet1","for=Spreadsheet1");
                sr.Close();
            }

            if (vbs_script != null) {
                Trace.Warn("vbscript", vbs_script);
                Trace.Warn("vbscript-path", (path + name));
                Trace.Warn("vbscriptExist", "File exist: " + File.Exists(path + name) + " BlockRegistered already: " + Page.ClientScript.IsClientScriptBlockRegistered("DrillThrough report " + (int)dr["ReportID"] + " script"));
                if (! Page.ClientScript.IsClientScriptBlockRegistered("DrillThrough report " + (int) dr["ReportID"] + " script"))
                    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "DrillThrough report " + (int) dr["ReportID"] + " script", vbs_script);
            }
            Trace.Warn("Was vbscript Registered: " + Page.ClientScript.IsClientScriptBlockRegistered("DrillThrough report " + (int)dr["ReportID"] + " script"));

            Title.Text = LanguageUtils.ChooseOnLanguage(dr["DisplayName_en"].ToString(), dr["DisplayName_fr"].ToString());

        }
        else { Trace.Warn("Did not read the report since no data no rows: "); }
        dr.Close();

为了让它工作,我将RegisterClientScriptBlock更改为RegisterStartupScript。现在注册成功了,明显的更改isClientScriptBlockRegistered到IsStartupScriptRegistered。

您的代码是否在UpdatePanel部分回发上运行?如果它在调试模式下工作,但未部署,则部署时的问题是文件权限。将文件设置为具有所有使用的完全权限,然后再次测试。如果可以的话,那么找出哪些权限是正确的(您不希望对脚本文件拥有完全权限)。您尝试过用其他名称注册吗?像
RegisterScript
这样的简单脚本?不知道您是否在那里使用了一些非法车辆。@Hogan我检查了文件,它具有完全权限。@VitorCanova我知道我的其他注册脚本工作正常,名称简单。我将尝试这样做,因为寄存器名当前有很多句点,可能会出错