我创建了一个从数据库返回某些类别的Web服务。如果我和客户一起测试WCF提供的一切都很完美。
我开始建立一个客户端。我在服务http://localhost/Transaction/transaction.svc
中添加了服务引用。我创建了一个客户端webservice的新实例
TransactionClient tc = new TransactionClient("BasicHttpEndpoint");
Category[] availableCategories = tc.GetAllCategories();
我在第二行代码上得到Object reference not set to an instance of an object
。端点名称是正确的。
知道错误的原因吗?
PS:如果您需要更多代码,请告诉我要发布的内容。 提前谢谢。
编辑:
[OperationContract]
List<Category> GetAllCategories();
Implementation :
public List<Category> GetAllCategories()
{ return db.GetAllCategories()}
该服务正在使用WCFClient进行测试,因此我的其余代码必须是corect。
这是从数据库中获取项目的代码。我试着发布解决方案,但应用程序没有停止。
List<Category> response = new List<Category>();
connect();
SqlCommand cmd = new SqlCommand("select id_category, name from tbl_category", conn);
try
{
dr = cmd.ExecuteReader();
while (dr.Read())
{
Category new_category = new Category();
new_category.id_category = int.Parse(dr["id_category"].ToString());
new_category.name = dr["name"].ToString();
response.Add(new_category);
}
}
catch (SqlException ex)
{
Console.Out.Write(ex.ToString());
}
finally
{
dr.Close();
conn.Close();
}
return response;
答案 0 :(得分:1)
FaultException
是从WCF频道的另一侧传输的异常。意思是,该异常不是在你调用tc.GetAllCategories();
的情况下发生的,而是在服务器端,在处理该方法时。
FaultException
包装在服务器端发生的异常。从我们在您粘贴的内容中可以看到,它是NullReferenceException
。要找到它出现的确切位置,请在GetAllCategories
方法中设置断点并逐步执行,直至失败。由于这是一个WCF服务,处理方法调用中的异常不会使服务崩溃,而是包装异常并将其发送回客户端。
找到错误发生位置的另一种方法是调试服务,打开Debug - &gt; Visual Studio中的异常和“em>公共语言运行时异常旁边的Thrown列中的勾选复选框”。这告诉VS调试器在发生错误时停止执行,即使WCF会捕获异常。