我有一个本地 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) 我正在尝试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)
我想提高程序的性能,向同一个外部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请求
- TaskWhenAll:〜650ms
- 多次等待:〜4500ms
为什么选择这种方法Task.WhenAll
要比使用另一种方法快得多,并且会带来负面影响(例如,异常处理等)?
提供有效的路由但未找到HTTP方法时,我试图获取405错误。当前,应用程序返回404s,因为它需要路由和方法都与功能匹配(MVC中的预期行为)。
[HttpGet("api/action")]
public IActionResult ActionGet()
{
// code
}
[HttpPost("api/action")]
public IActionResult ActionPost()
{
//code
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,如果我执行DELETE
或PUT
请求,则它将不会路由到这些函数中的任何一个,而只会返回404。
我当前的解决方案是在每个控制器中创建一个函数,无论使用哪种HTTP方法,该控制器的所有路由都经过硬编码以捕获请求。然后,这只会引发405错误。
[Route("api/action", Order = 2)]
public IActionResult Handle405()
{
return StatusCode(405);
}
Run Code Online (Sandbox Code Playgroud)
但是,我不太喜欢这种方式,因为它会在多个控制器上复制代码,并且每次在控制器中创建新动作时都需要更新硬编码的路由列表。
有没有更清洁的解决方案可以按我想要的方式处理路线?如使用属性或过滤器?
我在我的 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
中间件。
我想插入一个字符串的中间,但我不能使用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# ×5
asp.net-core ×2
acl ×1
asp.net ×1
asp.net-mvc ×1
asynchronous ×1
curl ×1
guzzle ×1
laravel ×1
ntfs ×1
php ×1
wordpress ×1