Я просматриваю список как безопасных, так и незащищенных доменов (как http://
, так и https://
) в массиве и хотел бы вернуть их коды статуса. Как это возможно в ASP.Net Core 1.0?Как получить коды HttpStatus в ASP.Net Core?
до сих пор, у меня есть
foreach(var item in _context.URLs.ToList())
{
// Do something here with item.Domain to check for status
// For example, if item.Domain was https://example.com..
}
Я пробовал с синтаксисом регулярных ASP.Net с этим подходом:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(item.Domain);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Проблема заключается в том, GetResponse
не работает в ASP.Net Ядра
Может ли кто-нибудь помочь мне с эффективным решением, чтобы возвращаемая переменная была статусом?
например: 200
, 500
, 404
..
EDIT - Вот мой полный контроллер И РЕШЕНИЕ:
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using MyApp.Models;
using System.Threading.Tasks;
using System.Net;
using System.Net.Http;
namespace MyApp.Controllers.Api
{
public class URLsController : Controller
{
private MyAppDBContext _context;
public class newLink
{
public string Domain { get; set; }
public HttpStatusCode Status { get; set; }
}
public async Task<HttpStatusCode> GetStatusCodes(string url)
{
var client = new HttpClient();
var response = await client.GetAsync(url);
return response.StatusCode;
}
public URLsController(MyAppDBContext context)
{
_context = context;
}
[HttpPost("api/URLs")]
public async Task<IActionResult> Post(string url)
{
if (url != "")
{
// I pass a URL in through this API and add it to _context.URLs..
// I execute a status code check on the URLs after this if statement
}
List<newLink> list = new List<newLink>();
foreach (var item in _context.URLs.ToList())
{
newLink t = new newLink();
t.Domain = item.Domain;
t.Status = await GetStatusCodes(item.Domain);
list.Add(t);
}
return Ok(list);
}
}
}
Это возвращает массив обратно в следующем формате:
[{"Домен": "https://example1.com/", "Статус": 200},
{ "Домен": "https://example2.com/", "Статус": 200},
{ "Домен": "https://example3.com/", "Статус": 200}]
Пожалуйста, добавьте код для метода контроллера. –
Что делать, если домен с URL-адреса не разрешен или ваше приложение не имеет доступа к сети? Какой код статуса вы ожидаете иметь в этом случае? –
Что значит «не работает»? Метод [есть] (http://stackoverflow.com/questions/41811672/how-to-acquire-httpstatus-codes-in-asp-net-core), и нет другого способа получить ответ. Если это не возвращает то, что вы ожидали, вам придется опубликовать, что представляет собой настоящая проблема. Вы получили исключение? Был ли [StatusCode] (https://github.com/dotnet/corefx/blob/master/src/System.Net.Requests/src/System/Net/HttpWebResponse.cs#L239) что-то неожиданное? Вы уверены, что используете * правильный * URL? –