小编prd*_*prd的帖子

本地 WordPress 站点上的 cURL 返回:错误 6(无法解析主机)

我有一个本地 WordPress 安装运行在:https://catalogue3.test

请注意,所有.test域都应解析为localhost,因为我使用Laravel 代客泊车。但是,当我在 Laravel 项目中执行以下代码时,出现如下所示的异常。

$client = new \GuzzleHttp\Client();
$response = $client->request('GET', "https://catalogue3.test", ['verify' => false]);
Run Code Online (Sandbox Code Playgroud)

连接异常

cURL 错误 6:无法解析:catalogue3.test(未找到域名)(参见http://curl.haxx.se/libcurl/c/libcurl-errors.html

当我在终端中运行以下命令时,会显示 WordPress 页面。

$client = new \GuzzleHttp\Client();
$response = $client->request('GET', "https://catalogue3.test", ['verify' => false]);
Run Code Online (Sandbox Code Playgroud)

php wordpress curl laravel guzzle

5
推荐指数
2
解决办法
6305
查看次数

无法设置文件夹的完全控制权限

我正在尝试Full Control通过C#将权限(用于NT服务帐户)添加到文件夹。但是,未设置权限,我在这里缺少什么?

var directoryInfo = new DirectoryInfo(@"C:\Test");
var directorySecurity = directoryInfo.GetAccessControl();

directorySecurity.AddAccessRule(new FileSystemAccessRule("NT Service\\FileMoverService",
    FileSystemRights.FullControl, AccessControlType.Allow));

directoryInfo.SetAccessControl(directorySecurity);
Run Code Online (Sandbox Code Playgroud)

文件夹权限

c# acl ntfs

5
推荐指数
1
解决办法
59
查看次数

与Task.WhenAll相比,多次等待的性能

一般信息

我想提高程序的性能,向同一个外部API端点发出多个HTTP请求。因此,我创建了一个控制台应用程序来执行一些测试。该方法GetPostAsync将异步HTTP请求发送到外部API,并以字符串形式返回结果。

private static async Task<string> GetPostAsync(int id)
{
    var client = new HttpClient();
    var response = await client.GetAsync($"https://jsonplaceholder.typicode.com/posts/{id}");
    return await response.Content.ReadAsStringAsync();
}
Run Code Online (Sandbox Code Playgroud)

此外,我已经实现了以下方法,以测试哪种方法执行时间最短。

private static async Task TaskWhenAll(IEnumerable<int> postIds)
{   
    var tasks = postIds.Select(GetPostAsync);
    await Task.WhenAll(tasks);
}

private static async Task MultipleAwait(IEnumerable<int> postIds)
{
    foreach (var postId in postIds)
    {
        await GetPostAsync(postId);
    }
}
Run Code Online (Sandbox Code Playgroud)

检测结果

使用集成Stopwatch类,我测量了这两种方法的执行时间,有趣的是,这种方法的Task.WhenAll执行方式比其对应方法更好:

发出50个HTTP请求

  1. TaskWhenAll:〜650ms
  2. 多次等待:〜4500ms

为什么选择这种方法Task.WhenAll要比使用另一种方法快得多,并且会带来负面影响(例如,异常处理等)?

c# asynchronous

4
推荐指数
1
解决办法
241
查看次数

想要得到405(方法不允许)而不是404

提供有效的路由但未找到HTTP方法时,我试图获取405错误。当前,应用程序返回404s,因为它需要路由和方法都与功能匹配(MVC中的预期行为)。

[HttpGet("api/action")]
public IActionResult ActionGet()
{
    // code
}

[HttpPost("api/action")]
public IActionResult ActionPost()
{
    //code
}
Run Code Online (Sandbox Code Playgroud)

在此示例中,如果我执行DELETEPUT请求,则它将不会路由到这些函数中的任何一个,而只会返回404。

我当前的解决方案是在每个控制器中创建一个函数,无论使用哪种HTTP方法,该控制器的所有路由都经过硬编码以捕获请求。然后,这只会引发405错误。

[Route("api/action", Order = 2)]
public IActionResult Handle405()
{
    return StatusCode(405);
}
Run Code Online (Sandbox Code Playgroud)

但是,我不太喜欢这种方式,因为它会在多个控制器上复制代码,并且每次在控制器中创建新动作时都需要更新硬编码的路由列表。

有没有更清洁的解决方案可以按我想要的方式处理路线?如使用属性或过滤器?

c# asp.net asp.net-mvc asp.net-core asp.net-core-2.2

4
推荐指数
1
解决办法
254
查看次数

条件中间件总是被执行

我在我的 ASP.NET Core Web-API 2.1 应用程序中添加了一个自定义中间件,它只需要针对某些请求执行。问题是,它总是在管道中执行。

启动文件

app.UseWhen(context => context.Request.Path.Value.Contains("AWS"), appBuilder =>
{
    app.UseMiddleware<ValidateHeaderHandler>();
});
Run Code Online (Sandbox Code Playgroud)

上面的代码完全忽略了条件并始终执行ValidateHeaderHandler中间件。

c# asp.net-core asp.net-core-webapi

3
推荐指数
1
解决办法
535
查看次数

在字符串中间插值

我想插入一个字符串的中间,但我不能使用String.Format,因为该字符串包含{}大括号.

这是我到目前为止所尝试的:

string code = "(function(){var myvariable = $"{variableToBeInterpolated}"});"
Run Code Online (Sandbox Code Playgroud)

返回:)预期; 预期

编辑:我尝试了下面的代码片段,插值现在正在工作,但代码不会在浏览器中执行.

"(function(){var myvariable=" + $"{myvariable c#}" + ")});"
Run Code Online (Sandbox Code Playgroud)

c# string-interpolation

2
推荐指数
1
解决办法
144
查看次数