C# Web方法Web服务不返回数据

C# Web方法Web服务不返回数据,c#,sql,C#,Sql,我有一个搜索分支的方法。参数是分支代码,它应该返回分支的详细信息 public bool SearchBranch() { using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DBReader"].ConnectionString)) { using (SqlCommand com = new SqlComman

我有一个搜索分支的方法。参数是分支代码,它应该返回分支的详细信息

 public bool SearchBranch()
    {
        using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DBReader"].ConnectionString))
        {

            using (SqlCommand com = new SqlCommand("Reader.usp_SearchBranch", con))
            {
                com.CommandType = CommandType.StoredProcedure;
                com.Parameters.Add("@BranchCode", SqlDbType.Int).Value = this.BranchCode;

                con.Open();

                SqlDataReader dr = com.ExecuteReader();
                if (dr.Read())
                {
                    this.BranchName = dr.GetValue(0).ToString();
                    this.AreaCode = dr.GetValue(1).ToString();
                    this.RegionCode = dr.GetValue(2).ToString();
                    this.CompanyCode = dr.GetValue(3).ToString();
                    this.CompanyName = dr.GetValue(4).ToString();
                    return true;
                }
                else
                {
                    return false;
                }


            }
        }
    }
这是我在Web服务中的Web方法中的代码(我不知道这是否正确)

这就是我在网页中访问/调用web方法的方式

  protected void SearchBranchButton_Click(object sender, EventArgs e)
    {
        try
        {
            accessrequest.BranchCode = Convert.ToInt32(BranchCodeTextBox.Text);
            iTicketWebService.SearchBranchAccessRequest(accessrequest);

            if (iTicketWebService.SearchBranchAccessRequest(accessrequest) == true)
            {
                BranchNameLabel.Text = accessrequest.BranchName;
                AreaLabel.Text = accessrequest.AreaCode;
                RegionLabel.Text = accessrequest.RegionCode;
                CompanyCodeLabel.Text = accessrequest.CompanyCode;
                CompanyLabel.Text = accessrequest.CompanyName;
                BranchEmailLabel.Text = accessrequest.BranchCode + "@pjlhuillier.com";
            }
            else
            {
                this.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", "<script type=\"text/javascript\">alert('Record not found. Please try again');</script>");
            }
        }
        catch (Exception)
        {
            this.ClientScript.RegisterClientScriptBlock(this.GetType(), "clientScript", "<script type=\"text/javascript\">alert('Wrong Input. Please try again');</script>");

        }
    }
protectedvoid searchbranch按钮点击(对象发送者,事件参数e)
{
尝试
{
accessrequest.BranchCode=Convert.ToInt32(BranchCodeTextBox.Text);
iTicketWebService.SearchBranchAccessRequest(accessrequest);
if(iTicketWebService.SearchBranchAccessRequest(accessrequest)==true)
{
BranchNameLabel.Text=accessrequest.BranchName;
AreaLabel.Text=accessrequest.AreaCode;
RegionLabel.Text=accessrequest.RegionCode;
CompanyCodeLabel.Text=accessrequest.CompanyCode;
CompanyLabel.Text=accessrequest.CompanyName;
BranchEmailLabel.Text=accessrequest.BranchCode+“@pjlhuillier.com”;
}
其他的
{
this.ClientScript.RegisterClientScriptBlock(this.GetType(),“ClientScript”,“警报('未找到记录。请重试'););
}
}
捕获(例外)
{
this.ClientScript.RegisterClientScriptBlock(this.GetType(),“ClientScript”,“警报('输入错误。请重试');”;
}
}

救命啊!它不会返回分支机构名称、区号、地区代码、公司代码和公司名称?

请按以下方式更改您的web方法

public AccessRequest SearchBranchAccessRequest(AccessRequest accessrequest)
{
    return accessrequest.SearchBranch(accessrequest);
} 
您还需要更改
SearchBranch()
方法

public accessrequest SearchBranch(AccessRequest accessrequest)
{

    if(you found record in database)
    {
       // update accessrequest here 
    }else
    {
      accessrequest =null;
    }
    // finally return the object
    return accessrequest;
}
当您调用此web服务时

AccessRequest  request = iTicketWebService.SearchBranchAccessRequest(accessrequest);

if(request!=null)
{
    BranchNameLabel.Text = request.BranchName;
}

由于您的方法签名随上述实现而改变,在空对象返回的情况下,您可以将其视为<代码> false >代码>实例,作为当前的实现,如果从服务返回对象,则可以将其视为<代码> TrimeCase. 如果您需要从服务方法返回

true
false
,并且还需要更新对象,那么您可以使用自定义类来同时返回这两个对象,如下所示

public class SearchBrancResponse
{
    public bool SearchStatus { get; set; }
    public AccessRequest  AccessReq  { get; set; }
}

然后可以从服务方法返回上面的内容。从客户端,您既有
布尔值
值,也有
访问请求

更改web方法,如下所示

public AccessRequest SearchBranchAccessRequest(AccessRequest accessrequest)
{
    return accessrequest.SearchBranch(accessrequest);
} 
您还需要更改
SearchBranch()
方法

public accessrequest SearchBranch(AccessRequest accessrequest)
{

    if(you found record in database)
    {
       // update accessrequest here 
    }else
    {
      accessrequest =null;
    }
    // finally return the object
    return accessrequest;
}
当您调用此web服务时

AccessRequest  request = iTicketWebService.SearchBranchAccessRequest(accessrequest);

if(request!=null)
{
    BranchNameLabel.Text = request.BranchName;
}

由于您的方法签名随上述实现而改变,在空对象返回的情况下,您可以将其视为<代码> false >代码>实例,作为当前的实现,如果从服务返回对象,则可以将其视为<代码> TrimeCase. 如果您需要从服务方法返回

true
false
,并且还需要更新对象,那么您可以使用自定义类来同时返回这两个对象,如下所示

public class SearchBrancResponse
{
    public bool SearchStatus { get; set; }
    public AccessRequest  AccessReq  { get; set; }
}

然后可以从服务方法返回上面的内容。从客户端,您有
布尔值和
AccessRequest

它将与我的方法(SearchBranch)冲突,因为它返回true和false。它将与我的方法(SearchBranch)冲突,因为它返回true和false。