C# 如何通过visualc中的bot应用程序从Azure中发布的数据库中获取数据#

C# 如何通过visualc中的bot应用程序从Azure中发布的数据库中获取数据#,c#,asp.net-web-api,C#,Asp.net Web Api,我在visualc中使用bot框架创建了一个bot应用程序,并在Azure中发布了它。我的数据库也在Azure中。我通过bot提供CompanyId、TenantId、SiteId和Bandid,然后从数据库中回复为CompanyName和Address。它是在TestData.cs类中编写的。 我还附加了我的TestapController,我想将数据从数据库中获取到bot应用程序中。如何编写我的RootDialog.cs public class TestAPIController : Ap

我在visualc中使用bot框架创建了一个bot应用程序,并在Azure中发布了它。我的数据库也在Azure中。我通过bot提供CompanyId、TenantId、SiteId和Bandid,然后从数据库中回复为CompanyName和Address。它是在TestData.cs类中编写的。 我还附加了我的TestapController,我想将数据从数据库中获取到bot应用程序中。如何编写我的RootDialog.cs

public class TestAPIController : ApiController
{

    [HttpGet]
    public IHttpActionResult Get(string TenantId, string CompanyId, string SiteId, string BandId)
    {
        TestData TestData = new TestData();
        var TestBusiness = TestData.Select(TenantId, CompanyId, SiteId, BandId);

        return Ok(TestBusiness);
    }

}    

public class TestData :DBConnection
{

    public List<TestBusiness> Select(string TenantId, string CompanyId, string SiteId, string BandId)
    {
        List<TestBusiness> list = new List<TestBusiness>();
        this.StoredProcedure = "RESQBOTGetCompanywiseData";
        AddParameter("TenantId", TenantId);
        AddParameter("CompanyId", CompanyId);
        AddParameter("SiteId", SiteId);
        AddParameter("BandId", BandId);
        DataTable dt = this.ExecuteSelect();
        foreach (DataRow dr in dt.Select())
        {
            TestBusiness item = new TestBusiness();
            item.CompanyName = dr["CompanyName"].ToString();
            item.Address = dr["Address"].ToString();
            list.Add(item);
        }
        return list;


    }
}
public类TestAPIController:ApiController
{
[HttpGet]
public IHttpActionResult Get(字符串TenantId、字符串CompanyId、字符串SiteId、字符串BandId)
{
TestData TestData=新的TestData();
var TestBusiness=TestData.Select(TenantId、CompanyId、SiteId、BandId);
返回Ok(TestBusiness);
}
}    
公共类TestData:DBConnection
{
公共列表选择(字符串TenantId、字符串CompanyId、字符串SiteId、字符串BandId)
{
列表=新列表();
this.StoredProcedure=“RESQBOTGetCompanywiseData”;
AddParameter(“TenantId”,TenantId);
AddParameter(“CompanyId”,CompanyId);
AddParameter(“SiteId”,SiteId);
AddParameter(“BandId”,BandId);
DataTable dt=this.ExecuteSelect();
foreach(dt.Select()中的数据行dr)
{
TestBusiness item=newtestbusiness();
item.CompanyName=dr[“CompanyName”].ToString();
item.Address=dr[“Address”].ToString();
列表。添加(项目);
}
退货清单;
}
}

您必须使用
HttpClient
,它允许您调用webapi并获取下面的数据是示例代码

using(var client = newHttpClient())  
{  
    client.BaseAddress = newUri("http://localhost:55587/");  
    client.DefaultRequestHeaders.Accept.Clear();  
    client.DefaultRequestHeaders.Accept.Add
              (newMediaTypeWithQualityHeaderValue("application/json"));  
    //GET Method  
    HttpResponseMessage response = 
              await client.GetAsync("GetAllRows/1/1/1/1");  
    if (response.IsSuccessStatusCode)  
    {  
    }  
}  

您还需要如下所示在web api中设置路由,并在调用此方法时传递所有参数

[Route("GetAllRows/{TenantId}/{CompanyId}/{SiteId}/{BandId}")]
 public IHttpActionResult Get(string TenantId, string CompanyId,
                   string SiteId, string BandId)
{
}
还可以为基于路由属性的路由配置webapi

   public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();

       }

请阅读本文:

在RootDialog.cs中,我创建了TestapicController实例的对象。然后调用该函数并将输入作为参数传递。我显示数据库的第一个数据中的数据

TestAPIController Test = new TestAPIController();
returnData = Test.Get(TenantId, CompanyId, SiteId, BandId);

string companyName = returnData[0].CompanyName.ToString();
string address= returnData[0].Address.ToString();

await context.PostAsync("Company Name = "+ companyName + " and It's address is "+ address);

你有你需要的信息吗?谢谢@Pranay的澄清。我还设置了路由并为路由配置了web api。请您解释一下在我的代码中编码user()的位置(哪个控制器或对话框文件)以及“application/json”的路径是什么。@KoshilaDilrukshi-hi不明白。如果您想在webapi中创建名为use的类,那么在model文件夹中创建类,而不是“application/json”这是一种指定您希望以json格式返回响应的方法。抱歉,错误不是user(),它应该使用与代码相关的(var client=newHttpClient())。请告诉我,在我的代码中使用()编写代码的位置在哪里。@KoshilaDilrukshi-您需要将其放在控制台、winform或wpf应用程序中……只是为了检查您的服务是否返回value@KoshilaDilrukshi-请到这里:你会得到详细信息的