2013-06-24 92 views
3

在我的項目中我有一個WebService用於生成列表,當我運行WebService時,我在c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config\DefaultWsdlHelpGenerator.aspx中獲得NullReference Exception未將對象引用設置爲Webservice中對象的實例

有人可以指我在我的代碼中有什麼問題嗎?

我試過的代碼是:

我得到
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(); 
    } 
} 

的源錯誤是:

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)); 

堆棧跟蹤是

[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 
+0

你的代碼在哪裏出錯? –

+0

@ Kostas錯誤是不是在我創建的代碼文件中,** Nullreference Exception **在'DefaultWsdlHelpGenerator.aspx' – Rajesh

+0

@Rajesh但是哪一行? –

回答

2

[的WebMethod]屬性從您的WebMethod中丟失。 試着寫你的Web方法一樣,

 [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(); 
     } 

裝上[的WebMethod]屬性的公共方法表明你想要的方法公開爲XML Web服務

+0

解釋我有在我的Web方法的頂部使用'[WebMethod]'編輯,但在運行相同的異常時發生。 – Rajesh

+0

順便問一下,請確認我:只是創建一個全新的asp.net web服務,而不做任何事情只是嘗試運行它,併成功運行?@ Rajesh – Rezoan

+1

我已經創建了一個沒有代碼的新鮮Web服務,試圖運行它,但同樣的異常被拋出。 – Rajesh

3

的ASP.Net的一部分如果爲您的網站禁用AutoEventWireup,則生成用於獲取對asmx資源的請求的輸出的處理程序不起作用。這是不幸的,因爲禁用這是性能最佳實踐。 Enable it in your web.config暫時關閉,完成後關閉。

(帽尖到Bryan Allott

1

作爲一種解決方案可以添加<%@頁autoEventWireup = 「真」 %>頂端 使用c:\​​ Windows \ Microsoft.NET \框架\ v4.0.30319 \ Config \ DefaultWsdlHelpGenerator.aspx

相關問題