我正在運行陣列中的安全和不安全域(包括http://
和https://
)的列表,並希望返回它們的狀態代碼。這在ASP.Net Core 1.0中如何實現?如何獲取ASP.Net核心中的HttpStatus代碼?
到目前爲止,我有
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
..
編輯 - 這是我的全部控制及解決方法:
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);
}
}
}
這將返回數組回到這個格式:
[{「Domain」:「https://example1.com/」,「Status」: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)是否會返回意外的內容?你確定你使用了*正確的*網址嗎? –