2012-09-25 109 views
11

我正在使用visual studio,並將asp.net應用程序作爲一個項目,並將web服務作爲另一個項目。我在我的asp.net應用程序中使用了web服務。我的web服務代碼存在一些問題,但我無法從asp.net應用程序連續調試到web服務。我在應用程序和Web服務中都放置了斷點,但在Web服務中未啓用斷點,並顯示連接錯誤。如何在本地主機上託管時如何執行此操作?如何調試Web服務?

+0

他們是在IIS或由VS測試我們託管b服務器?如果IIS,在本地主機或遠程? –

+0

如果您遇到連接錯誤,那麼您沒有到達Web服務中的任何代碼,這就是爲什麼Web服務中的斷點未被擊中的原因。你確定你的地址正確嗎? – Tobsey

+0

@Garland:都是在本地主機 –

回答

15

如果您將Web應用程序作爲啓動項目運行,請嘗試在另一個調試實例中運行Web服務。

您可以通過Web服務項目,調試右擊做到這一點 - >啓動新的實例

+0

這是正確的方法。 –

+0

完美!我只是測試它,它在單發鏡頭中工作。 –

2

Web服務是否在遠程計算機上運行,​​如果需要,您需要爲Web服務設置遠程調試。

+0

Web服務和應用程序都在同一臺計算機上 –

+1

它是一個wcf Web服務嗎?如果是這樣,你需要啓用調試 - http://msdn.microsoft.com/en-us/library/bb157687.aspx – NiladriBose

+0

沒有它不是wcf。 –

7

您應該將調試器附加到w3wp(IIS進程)。

這是一個link可以幫助你。

+0

我在asp.net開發服務器上測試。 –

+0

你有沒有在方法中設置一個斷點? – Cybermaxs

3

如果你想在本地系統進行調試,您可以設置多個啓動項目。 您可以通過解決方案屬性設置多個啓動。 希望這個幫助

1

嘗試調試服務本身,看看它是否擊中斷點。只需將其中具有服務的項目設置爲主項目並將該服務設置爲主起始頁面即可。

如果它沒有命中斷點,它可能沒有加載所有的符號。如果項目設置爲,可以這麼說,釋放配置而不是調試。

0

您能檢查一下您是否添加服務引用您的Web服務,否則您無法訪問您的Web服務功能。我在我的項目是這樣它的下面

期運用Web服務,這是我的web服務代碼

[WebService(Namespace = "http://tempuri.org/")] 
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
    [System.ComponentModel.ToolboxItem(false)] 
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService] 
    public class JsonData : System.Web.Services.WebService 
    { 

     [WebMethod(Description = "")] 
     [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)] 
     public StateData[] GetStateByCountryID(int ID) 
     { 
      StateData objStateData = new StateData(); 
      LMGDAL.db_LMGEntities dbData = new db_LMGEntities();     
      var data = (from con in dbData.tblStates 
         where con.State_CountryID == ID 
         select new StateData 
         { 
          StateID = con.StateID, 
          StateName = con.StateName 
         }).ToList(); 
      return data.ToArray(); 
     } 

然後我服務引用添加到我的asp.net web表單

這段代碼在我的形式

<script type="text/javascript"> 
    $(function() { 

     $("#ddlCountry").change(function() { 
      var countryID = $("#ddlCountry").val(); 
      $.ajax({ 
       type: "POST", 
       url: "JsonData.asmx/GetStateByCountryID", 
       contentType: "application/json; charset=utf-8", 
       dataType: 'json', 
       data: '{ID:"' + countryID + '"}', 
       success: function (msg) { 
        var data = msg.d; 
        var stateData = ""; 
        $.each(data, function (index, itemdata) { 
         stateData += "<option value='" + itemdata.StateID + "' > " + itemdata.StateName + " </option>"; 
        }); 
        $("#ddlState").empty(); 
        $("#ddlState").append("<option value='0'>-Select State-</option>"); 

        $("#ddlState").append(stateData); 
       }, 
       error: function() { 
        alert('Faild To Retrieve States.'); 
       } 
      }); 
     }); 

我認爲這將有助於你