C# 如何在Xamarin的api控制器中使用异步方法

C# 如何在Xamarin的api控制器中使用异步方法,c#,.net,entity-framework,xamarin,asp.net-web-api2,C#,.net,Entity Framework,Xamarin,Asp.net Web Api2,我是Xamarin的新手,通常在生产中使用Xamarin时,我会执行以下操作: // GET: api/Jobs public async Task<string> GetJobs() { return await db.GetAllJobsAsync(); } //获取:api/Jobs 公共异步任务GetJobs() { 返回wait db.GetAllJobsAsync(); } 我的问题是,我想返回工程师拥有的所有作业,因此我在数据访问层中使用了此方法

我是Xamarin的新手,通常在生产中使用Xamarin时,我会执行以下操作:

 // GET: api/Jobs
 public  async Task<string> GetJobs()
 {
     return await db.GetAllJobsAsync();
 }
//获取:api/Jobs
公共异步任务GetJobs()
{
返回wait db.GetAllJobsAsync();
}
我的问题是,我想返回工程师拥有的所有作业,因此我在数据访问层中使用了此方法,然后使用api从中返回json,但如何在我的作业api控制器中调用下面的方法

/// <summary>
/// Get All Jobs Assigned to the work person.
/// </summary>
/// <param name="id"></param>
/// <returns></returns>

public async Task<string> GetAllJobsAsync(int Id)
{
        string json;

        using (FuelCallManagmentEntities _db = new FuelCallManagmentEntities())
        {
            var task = Task.Run(() => _db.Jobs.Where(w => w.EngineerId == Id).ToList());
            List<Job> alljobs = await task;

            json = JsonConvert.SerializeObject(alljobs, Formatting.Indented);
        }

        return json;
}
//
///获得分配给工作人员的所有工作。
/// 
/// 
/// 
公共异步任务GetAllJobsAsync(int Id)
{
字符串json;
使用(FuelCallManagementEntities _db=new FuelCallManagementEntities())
{
var task=task.Run(()=>u db.Jobs.Where(w=>w.engineerinid==Id.ToList());
列出所有作业=等待任务;
json=JsonConvert.SerializedObject(所有作业,格式化.缩进);
}
返回json;
}
我的问题是,我是否应该返回json?当然,这并不是那么安全,如果使用这种方式,那么保护密码的最佳方式是什么

我希望我可以使用azure,但这必须是我们公司的安全托管解决方案

当我试图运行上面的代码时,我也会遇到上面的错误

{“Message”:“出现错误”。,“ExceptionMessage”:“ObjectContent`1”类型未能序列化内容类型“application/json;charset=utf-8”的响应正文。”,“ExceptionType”:“S”


重构您的方法以:

public async Task<IActionResult> GetAllJobsAsync(int Id)
{
    using (var _db = new FuelCallManagmentEntities())
    {
        var alljobs = await _db.Jobs.Where(w => w.EngineerId == Id).ToListAsync();

        return Ok(alljobs);
    }
}
公共异步任务GetAllJobsAsync(int-Id)
{
使用(var _db=new fuelcallmanagemententities())
{
var alljobs=await_db.Jobs.Where(w=>w.engineerinid==Id).toListSync();
返回Ok(所有作业);
}
}
关于第二个问题,这是一个不同的问题,这是离题的,所以

据我所知,目前的标准是将密码保存在
散列Salt
机制中。 用一种很好的方式解释这个机制


顺便说一句,您不应返回密码或使用公开存储密码的机制。

将您的方法重构为:

public async Task<IActionResult> GetAllJobsAsync(int Id)
{
    using (var _db = new FuelCallManagmentEntities())
    {
        var alljobs = await _db.Jobs.Where(w => w.EngineerId == Id).ToListAsync();

        return Ok(alljobs);
    }
}
公共异步任务GetAllJobsAsync(int-Id)
{
使用(var _db=new fuelcallmanagemententities())
{
var alljobs=await_db.Jobs.Where(w=>w.engineerinid==Id).toListSync();
返回Ok(所有作业);
}
}
关于第二个问题,这是一个不同的问题,这是离题的,所以

据我所知,目前的标准是将密码保存在
散列Salt
机制中。 用一种很好的方式解释这个机制


顺便说一句,你不应该返回密码,也不应该有公开你存储的密码的机制。

最好的办法是在个人手机上保留一个本地密码数据库,用于驱动程序风格的应用程序for@DavidB在手机的安全存储中,您可以使用此功能…最好在个人手机上为驾驶员保留一个本地密码数据库tyle应用程序只是for@DavidB在手机的安全存储中,您可以使用此。。。