[英]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服务认证有关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.