Rajesh
Rajesh

Reputation: 1620

Object reference not set to an instance of an object in Webservice

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

Answers (3)

Alina
Alina

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

bmm6o
bmm6o

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

Rezoan
Rezoan

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

Related Questions