我是一个相当新的程序员,对Web编程很新,我需要一些ASP.NET补救。我正在尝试在表单中实现自动完成控件。当我将搜索逻辑放在代码隐藏的形式中时,一切正常。但是,一旦我将搜索逻辑移动到Web服务(自动完成仍然在表单代码中调用相同的方法),一切都变得棘手。我正在使用OleDb连接并尝试在我的工作站上访问测试数据库,但是我收到一条错误消息,指出服务器无法访问。
显然,我可以坚持使用aspx代码隐藏,但无论我需要了解Web服务的基本工作方式。有人可以帮我理解我在哪里犯错误吗?
我看起来像这样:
...
[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public static string[] GetContacts(string prefixText, int count)
{
AutoCompleteService autoCompleteService = new AutoCompleteService();
autoCompleteService.QueryString = "SELECT ...";
autoCompleteService.ConnectionString = UserContext.ConnectionString;
return autoCompleteService.GetResults(prefixText, count);
}
...
<%@ WebService Language="C#" CodeBehind="AutoComplete.Service.cs" Class="AutoCompleteService" %>
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
using System.Data.OleDb;
using System.Data;
[WebService(Namespace = "http://tempuri.org/")]
[System.Web.Script.Services.ScriptService]
public class AutoCompleteService : System.Web.Services.WebService {
public string QueryString;
public string ConnectionString;
public AutoCompleteService()
{
QueryString = "";
ConnectionString = "";
}
[WebMethod]
public String[] GetResults(string prefixText, int count)
{
...
}
private String[] GetNameListFromDB()
{
List<string> resultList = new List<string>();
OleDbConnection connection = new OleDbConnection(ConnectionString);
connection.Open(); //Exception thrown here.
...
}
ServerVersion = 'connection.ServerVersion' threw an exception of type 'System.InvalidOperationException'
答案 0 :(得分:1)
您调用CodeBehind,并且只是实例化该类。它不使用该服务。
使用您的客户端JavaScript库,您可以直接调用该服务。 没有codeBehind中的代码。但这取决于你的客户端js库。
我推荐你的是,获取lern MVC或asp.net MVC,因为他们有更简单的东西,最后更容易实现。