从服务器重定向新页面

时间:2010-06-28 14:48:15

标签: c# asp.net webmethod

我有这个WebMethod,它重定向到该服务器上的另一个页面。

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public static Boolean realizaConsulta(Dictionary<string, string> datos)
{
    System.Web.HttpContext.Current.Response.Redirect("PRepConsulta.aspx", false);
}

但是我收到了这个错误:

  

Microsoft JScript运行时错误:Sys.Net.WebServiceFailedException:   服务器方法'realizaConsulta'失败,出现以下错误:   System.InvalidOperationException--身份验证失败。

导致此错误的原因是什么?


查看我尝试过的其他选项:

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
        public static Boolean realizaConsulta(Dictionary<string, string> datos)
        {
           System.Web.HttpContext.Current.Server.Execute("PRepConsulta.aspx", false);
        }

IT工作,因为它要去PRepConsulta.aspx并执行UNDERCODE,但页面从未显示过。

我也受过试验:

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
        public static Boolean realizaConsulta(Dictionary<string, string> datos)
        {
               HttpContext.Current.Server.Transfer("PRepConsulta.aspx", false);
        }

但是我发现了这个错误:

Microsoft JScript运行时错误:Sys.Net.WebServiceFailedException:服务器方法'realizaConsulta'失败,出现以下错误:System.Threading.ThreadAbortException-- Subproceso anulado。

我不知道可以尝试什么

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

我不确定“身份验证失败”部分,但WebMethod内部的Response.Redirect可能会破坏调用该方法的SOAP客户端。它期待布尔值,而不是重定向。

答案 1 :(得分:0)

好的,我要组织应用程序的流程:

来自我的客户端,在javascript中,我正在调用一个Web服务

       PageMethods.realizaConsulta(DATOS);

在我的代码隐藏中,我必须执行pageMethod并调用另一个页面

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public static Boolean realizaConsulta(Dictionary<string, string> datos)
{

    clsGeneral consulta;
    DataTable dtTemp = new DataTable();

    using (consulta = new clsGeneral("SQLConn"))
    {
        consulta.consultaPrograma(ref dtTemp, datos["Codigo"],  Int16.Parse(datos["Cod_Actividad"]), Int16.Parse(datos["Cod_SubActividad"]), datos["FechaIni"], datos["FechaFin"]);
        HttpContext.Current.Session["Consulta"] = dtTemp;

    //THIS ARE THE 3 DIFFERENT WAYS I HAVE TRIED TO CALL THE PRepConsulta.aspx,
    //I DONT KNOW IF THERE IS A BETTHER WAY TO DO IT

    //System.Web.HttpContext.Current.Response.Redirect("PRepConsulta.aspx", false);
    //HttpContext.Current.Server.Transfer("PRepConsulta.aspx", false);
    //System.Web.HttpContext.Current.Server.Execute("PRepConsulta.aspx",writer, false);
    }
    return true;
}

感谢