0

そのサーバー上の別のページにリダイレクトするこの 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);
        }

PRepConsulta.aspx に移動してアンダーコードを実行するため、機能しますが、ページは表示されません。

私も試しました:

        [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-- サブプロセスが実行されません。

他に何を試せばいいのかわからない

助けてくれてありがとう

4

2 に答える 2

1

「認証に失敗しました」という部分についてはわかりませんが、WebMethod 内の Response.Redirect は、メソッドを呼び出している SOAP クライアントを壊す可能性があります。リダイレクトではなく、ブール値が必要です。

于 2010-06-28T14:55:50.840 に答える
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;
}

ありがとう

于 2010-06-28T16:43:33.043 に答える