在API调用C#中找不到文件时返回错误代码

时间:2017-06-26 06:15:16

标签: c# api azure asp.net-web-api

我正在尝试创建API调用以从 azure data lake store 读取文件。但是我无法显示找到的特定文件的正确响应和错误,而且找不到

我也可以连接azure数据湖并获取数据,正确使用try-catch。请帮助我为c# API提供正确的响应正文和响应代码。

try
        {
            string aa = GetItemInfo("/myfolder/subfolder/testfile.txt");
            return new string[]
            {
            "Hello",
            aa,
            "World"

        };
            }
catch {
            return new string[]
         {
            "Hello",
            "World"

     };

我的代码正在运行。由于我是C#上API调用的新手,我无法找到正确的方法来执行此操作。

2 个答案:

答案 0 :(得分:2)

您必须创建以下

var responseMessage = new HttpResponseMessage>(errors,HttpStatusCode.BadRequest);

  

抛出新的HttpResponseException(responseMessage);

您可以找到答案here以及here

答案 1 :(得分:1)

导致例外的原因有很多。例如,网络问题或令牌已过期。为了显示找到的特定文件的正确响应和错误,我建议您在阅读项目信息之前检查路径是否存在。

public static  bool ItemExist(string path)
{
    return _adlsFileSystemClient.FileSystem.PathExists(accountName, path);
}

使用ItemExist方法检查路径是否存在的代码。

string path = "/myfolder/subfolder/testfile.txt";
if (ItemExist(path))
{
    string aa = GetItemInfo(path);
    return new string[]
    {
        "Hello",
        aa,
        "World"
    };
}
else
{
    var responseMessage = new HttpResponseMessage(HttpStatusCode.NotFound);
    responseMessage.Content = new StringContent("The file path which you requested is not found");
    throw new HttpResponseException(responseMessage);
}

对于其他意外的异常,我建议您在ASP.NET Web API中使用Global Error Handling