簡體   English   中英

ASP.NET Web服務:身份驗證失敗。 ExceptionType“:” System.InvalidOperationException”

[英]ASP.NET WebService: Authentication failed. ExceptionType“:”System.InvalidOperationException"

我的網頁上有一個文本框和Ajax autocompleteextender。我在本地Dev Machine上沒有問題。當我將此頁面上傳到遠程主機時,收到“身份驗證失敗。ExceptionType”:“ System.InvalidOperationException”此錯誤。

這是我的密碼;

 <form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Services>
        <asp:ServiceReference Path="~/WebService.asmx" />
    </Services>
</asp:ScriptManager>
<div>
    <asp:TextBox ID="txtAra" runat="server"></asp:TextBox>
    <cc1:autocompleteextender id="AutoCompleteExtender1" runat="server" servicepath="~/WebService.asmx"
        servicemethod="IsmeGoreGetir" minimumprefixlength="1" targetcontrolid="txtAra"
      >
                    </cc1:autocompleteextender>
</div>
</form>

然后是Web服務端;

OleDbConnection con;
OleDbCommand cmd;
OleDbDataReader dr;


[WebMethod(EnableSession = true)]
public string[] IsmeGoreGetir(string prefixText, int count)
{
    con = new OleDbConnection("Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + Server.MapPath("~/App_Data/nobetRehber.mdb"));

    cmd = new OleDbCommand( "Select * from Rehber Where AD like '" + prefixText.ToUpper() + "%'",con);

    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
    if (con.State != ConnectionState.Open)
        con.Open();

    DataTable dt = new DataTable();
    da.Fill(dt);
    string[] items = new string[dt.Rows.Count];
    int i = 0;
    foreach (DataRow dr in dt.Rows)
    {
        items.SetValue(dr["AD"].ToString(), i);
        i++;
    }
    con.Close();
    return items;
}
  • 哇,我真的希望您不要將其上傳到面向公眾的服務器。 http://sqlmap.sourceforge.net/將在幾秒鍾內擁有該網站。 prefixText:=“ 1 = 1; DELETE * FROM Rehber;-”是它的一個非常簡單的版本。

  • 由於您具有字段,因此我只能假設您在一個連接上有多個閱讀器。 你在躲田野博士。

    • 既然是這種情況,您還將在每次調用時分配一個新的連接,從而導致內存泄漏。
    • 由於是這種情況,因此您剛剛創建了許多訪問field con的競爭條件。

    • 同上cmd。

  • dr [“ AD”]。ToString()可以拋出null ref,或者如果db-schema與代碼脫節,則將拋出null ref。

因此,如果您修改了比賽條件和有趣的代碼,它實際上可能會起作用。 另外,下次提供stacktrace。 :)

直接從IE中的客戶端調用IE中的WebService.asmx頁面。 一旦將Web服務托管到生產計算機,首先檢查該Web服務是否可訪問。

如果它的工作。 檢查客戶端從代碼調用服務時需要哪種身份驗證。

此問題與連接或命令無關。 它與Web服務認證有關。

參考。 http://support.microsoft.com/kb/813834

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM