2012-09-25 36 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.'); 
       } 
      }); 
     }); 

我认为这将有助于你