Web客户端在 GET 请求 MVC 5 上返回错误 500

本文关键字:返回 错误 MVC 客户端 GET 请求 Web | 更新日期: 2023-09-27 18:37:17

我在使用WebClient时遇到了问题。我正在使用 API 密钥身份验证,API 密钥确实是合法的。如果我关闭 API 上的身份验证,它会毫无问题地获取数据,但是,如果我在 WebClient 标头中启用检查"身份验证",它会返回一个带有错误/无效 API 密钥的 401,但对于有效的 API,它会返回错误 500。

使用 Web 客户端编写代码:

public ActionResult Index()
{
    using (var client = new WebClient())
    {
        client.Headers.Clear();
        client.Headers.Add("Authorization", AppSettings.ApiKey());
        client.Headers.Add("Host", "localhost");
        client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
        var newsJson = client.DownloadString("http://localhost:59308/Api/ListNews");
        var newsJsonDeserialized = JsonConvert.DeserializeObject<List<News>>(newsJson);
        ViewData["NewsFeed"] = newsJsonDeserialized.ToList();
    }
    var dayMessages = new List<string> { "an astonishing", "an amazing", "a beautiful", "a gorgeous", "a loving" };
    var randomNumber = new Random().Next(dayMessages.Count);
    ViewData["DayOfWeekMsg"] = dayMessages[randomNumber] + " " + DateTime.Now.ToString("dddd");
    return View();
}

接口控制器:

public ActionResult ListNews()
{
    using (var db = new Entities())
    {
        var apiToken = Request.Headers["Authorization"];
        var apiTokens = db.ApiTokens.ToList();
        var websiteUrl = Request.Url.Host;
        if (apiTokens.SingleOrDefault(i => i.Token == apiToken && i.WebsiteUrl == websiteUrl) == null)
        {
            return new HttpUnauthorizedResult();
        }
        var news = db.News;
        var newsList = news.ToList();
        return Content(JsonConvert.SerializeObject(newsList, Formatting.Indented), "application/json");
    }
}

提前感谢!

Web客户端在 GET 请求 MVC 5 上返回错误 500

不确定这是否是同样的问题,但我收到了 500,我通过设置接受语言标头(使用 UserAgent)进行了修复:

client.Headers.Add(HttpRequestHeader.AcceptLanguage, "en");