Reputation: 1620
In my Project I am having a WebService for generating a list, when I run the WebService I get the NullReference Exception
in the c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config\DefaultWsdlHelpGenerator.aspx
.
Could anybody point me what is the problem in my code?
The Code I tried is:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
using System.Data;
using SubSonic;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class AutoComplete : System.Web.Services.WebService
{
public AutoComplete()
{
//InitializeComponent();
}
public string[] Getlist(string keywordstartswith)
{
IList<string> output = new List<string>();
Dictionary<string, string> mydict = new Dictionary<string, string>();
string QueryString = System.Configuration.ConfigurationManager.ConnectionStrings ["IUMSNXG"].ToString();
IDataReader obj_result = SearchApp.DBCon.LRS_SP_CBFM_Sel(keywordstartswith).GetReader();
DataTable dt = new DataTable();
dt.Load(obj_result);
if(dt.Rows.Count > 0)
{
while (obj_result.Read())
{
output.Add(string.Format("{0}~{1}", obj_result["AnimalCode"].ToString().TrimEnd(), obj_result["pk_animalid"].ToString().TrimEnd()));
}
}
return output.ToArray();
}
}
The Source Error I am Getting is:
Line 1333:
Line 1334: OperationBinding FindHttpBinding(string verb) {
Line 1335: foreach (ServiceDescription description in serviceDescriptions) // Getting Error Here
{
Line 1336: foreach (Binding binding in description.Bindings) {
Line 1337: HttpBinding httpBinding = (HttpBinding)binding.Extensions.Find(typeof(HttpBinding));
The Stack Trace is
[NullReferenceException: Object reference not set to an instance of an object.]
ASP.defaultwsdlhelpgenerator_aspx.FindHttpBinding(String verb) in c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config\DefaultWsdlHelpGenerator.aspx:1335
ASP.defaultwsdlhelpgenerator_aspx.get_HttpPostOperationBinding() in c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config\DefaultWsdlHelpGenerator.aspx:526
ASP.defaultwsdlhelpgenerator_aspx.get_ShowingHttpPost() in c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config\DefaultWsdlHelpGenerator.aspx:541
ASP.defaultwsdlhelpgenerator_aspx.__Render__control20(HtmlTextWriter __w, Control parameterContainer) in c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 \Config\DefaultWsdlHelpGenerator.aspx:1574
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +109
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +31
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +208
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
System.Web.UI.Page.Render(HtmlTextWriter writer) +29
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +27
System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3060
Upvotes: 3
Views: 6015
Reputation: 51
As a solution you can add <%@ Page autoEventWireup="true" %> to the top of c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config\DefaultWsdlHelpGenerator.aspx
Upvotes: 1
Reputation: 6505
The ASP.Net handler that generates the output for get requests to the asmx resource doesn't work if AutoEventWireup is disabled for your web site. This is unfortunate since disabling that is a performance best practice. Enable it in your web.config temporarily, and turn it off when you are done.
(hat tip to Bryan Allott)
Upvotes: 3
Reputation: 1787
[WebMethod] attribute is missing from your WebMethod. Try to write your web method like,
[WebMethod]
public string[] Getlist(string keywordstartswith)
{
IList<string> output = new List<string>();
Dictionary<string, string> mydict = new Dictionary<string, string>();
string QueryString = System.Configuration.ConfigurationManager.ConnectionStrings["IUMSNXG"].ToString();
IDataReader obj_result = SearchApp.DBCon.LRS_SP_CBFM_Sel(keywordstartswith).GetReader();
DataTable dt = new DataTable();
dt.Load(obj_result);
if (dt.Rows.Count > 0)
{
while (obj_result.Read())
{
output.Add(string.Format("{0}~{1}", obj_result["AnimalCode"].ToString().TrimEnd(), obj_result["pk_animalid"].ToString().TrimEnd()));
}
}
return output.ToArray();
}
Attaching the [WebMethod] attribute to a Public method indicates that you want the method exposed as part of the XML Web service
Upvotes: 2