セキュリティで保護されたドメインとセキュリティで保護されていないドメインのリスト(両方とも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
...
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を使用していますか? –