我正在开发一个C#控制台应用程序,用于测试URL是有效还是有效.它适用于大多数URL,并且可以从目标网站获得HTTP状态代码的响应.但是在测试其他一些URL时,应用程序会在运行HttpClient.SendAsync方法时抛出"发送请求时发生错误"异常.因此,即使此URL实际上在浏览器中有效,我也无法获得任何响应或HTTP状态代码.我迫不及待地想知道如何处理这个案子.如果URL不起作用或服务器拒绝我的请求,它至少应该给我相应的HTTP状态代码.
以下是我的测试应用程序的简化代码:
using System;
using System.Net.Http;
using System.Threading.Tasks;
namespace TestUrl
{
class Program
{
static void Main(string[] args)
{
// var urlTester = new UrlTester("http://www.sitename.com/wordpress"); // works well and get 404
// var urlTester = new UrlTester("http://www.fc.edu/"); // Throw exception and the URL doesn't work
var urlTester = new UrlTester("http://www.ntu.edu.tw/english/"); // Throw exception and the URL works actually
Console.WriteLine("Test is started");
Task.WhenAll(urlTester.RunTestAsync());
Console.WriteLine("Test is stoped");
Console.ReadKey();
}
public class UrlTester
{
private HttpClient _httpClient;
private string _url;
public UrlTester(string url) …Run Code Online (Sandbox Code Playgroud) 我正在开发一个C#控制台应用程序来测试URL是否有效.它适用于大多数URL.但我们发现在某些情况下,应用程序始终从目标站点获得404响应,但URL实际上在浏览器中工作.当我在DHC(Dev HTTP Client)等工具中尝试使用这些URL时,这些URL也可以正常工作.
在一开始,我认为这可能是不添加正确标题的原因.但是在尝试使用Fiddler编写具有相同标头的http请求之后,它在Fiddler中工作.
那我的代码出了什么问题?.NET HttpClient中是否有任何错误?
以下是我的测试应用程序的简化代码:
class Program
{
static void Main(string[] args)
{
var urlTester = new UrlTester("http://www.hffa.it/short-master-programs/fashion-photography");
Console.WriteLine("Test is started");
Task.WhenAll(urlTester.RunTestAsync());
Console.WriteLine("Test is stoped");
Console.ReadKey();
}
public class UrlTester
{
private HttpClient _httpClient;
private string _url;
public UrlTester(string url)
{
_httpClient = new HttpClient
{
Timeout = TimeSpan.FromMinutes(1)
};
// Add headers
_httpClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36");
_httpClient.DefaultRequestHeaders.Add("Accept-Encoding", "gzip,deflate,sdch");
_httpClient.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
_httpClient.DefaultRequestHeaders.Add("Accept-Language", "sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4");
_url = url;
}
public async Task …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 NEST 根据用户的输入动态创建搜索查询。
我有一个带有用户输入的 Filter 类:
Public class ProductFilter
{
public string Name { get; set; }
public DateTime? PublishDateFrom { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但对于 Name 和 PublishDateFrom 等属性,如果用户未指定,它们可能为空或 null。
因此,在使用 NEST 进行搜索时,如下代码所示:
var response1 = await client.SearchAsync<ProjectDocument>(s => s
.Index(Indices.Parse("products"))
.From(0)
.Size(10000)
.Type("product")
.Query(q => q
.....
)
);
Run Code Online (Sandbox Code Playgroud)
我想介绍一次搜索中 Name 或 PublishDateFrom 为空或为 null 时的情况。
现在如果我使用:
...
.Query(q => q
.Term(p => p.Name, filter.Name)
Run Code Online (Sandbox Code Playgroud)
当filter.Name为空或null时,搜索结果为空。我想要这样的东西:如果 filter.Name 为空或 null,则与 Name 相关的术语查询不会执行或包含在 SearchAsync 调用中。当 Name 和 PublishDateFrom 都为空或 null …
我正在为 AWS DynamoDB 使用时间点恢复 (PITR)。
DynamoDB 表A是使用 Terraform 配置的。在表 A 上启用 PITR 后,我设法根据AWS 文档中的说明使用 CLI将其恢复到新表A-Backup。
还原完成后,我更新了 lambda 以使用新表名A-Backup作为表环境变量的新值。
但现在的问题是如何在 Terraform 中同步此更改以确保 Terraform 反映所做的更改,即从 PITR 创建的新表?
这里的最佳做法是什么?