我昨天下载了Instagram,所以我可以注册,然后创建一个目前处于Sandbox模式的新客户端.我创建了一个网站,搜索Twitter和Instagram上的某些主题标签,唯一阻止我上线的是Instagram客户端仍处于沙盒模式.
"Go Live"按钮被禁用,我不知道我需要做什么才能启用它.文档没有说什么.它提到某个地方存在审核流程,但我甚至没有看到提交申请进行审核的选项.这甚至是如何工作的,因为我的应用程序不是手机应用程序.我已经建立了一个移动友好的网站,但它甚至不需要用户登录.
非常感谢任何更多信息和澄清!
我有一个键入的客户端,我想将其注册为单例:
public class SomeHttpClient
{
private readonly IHttpClientFactory _clientFactory;
public SomeHttpClient(IHttpClientFactory clientFactory)
{
_clientFactory = clientFactory;
}
public Task MakeSomeCallAsync(...)
{
var client = _clientFactory.Create();
// Do more stuff
}
}
Run Code Online (Sandbox Code Playgroud)
类型化的客户端必须是单例的,因为它有一些断路器逻辑,如果 API 对客户端进行速率限制,则会中断电路。电路必须在整个应用程序中断开,显然不仅仅是当前的请求管道(否则客户端将继续访问已经从其他实例进行速率限制的 API)。这已经通过使用封装了该功能的类型化客户端(虽然不是 Polly)来实现的。
现在因为类型化的客户端将是一个单身人士,我们不能注入一个单身人士,HttpClient因为这会带来我们以前在一个 long living 中遇到的所有问题HttpClient。显而易见的解决方案是注入一个HttpClientFactory现在可以用来在HttpClient每次键入的客户端需要一个实例时发出一个实例而不必担心生命周期管理等,因为这已经推迟到HttpClientFactory现在。
我现在的问题是如何HttpClientFactory为一个简单的功能集成测试创建默认值,我想在其中实例化一个类型化的客户端,看看我是否可以点击 API 并从自动化测试中获得成功的响应?
我不想设置一个 ASP.NET Core TestServer 和一个围绕它的整个应用程序,因为这对于我现在想要做的那种功能测试来说太过分了。
没有可用于注入HttpClientFactory?
c# dotnet-httpclient .net-core asp.net-core httpclientfactory
正如在其他SO问题中提到的,Windows Azure Web应用程序在IIS/8.0上运行,但我怀疑这是否真的如此.
首先,当我检查来自Azure Web Apps免费层上运行的Web应用程序的HTTP响应时,我可以看到以下HTTP标头:
Server:Microsoft-IIS/8.0
Run Code Online (Sandbox Code Playgroud)
但是,根据此文档和我的计算机上的一些本地测试,我知道requestFiltering removeServerHeaderIIS 8.0不支持.
例如:
<configuration>
<system.webServer>
<security>
<requestFiltering removeServerHeader="true" />
</security>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这是一个已添加IIS 10.0的功能,我可以通过在带有IIS 10.0的Windows 10 VM上运行更多测试来确认这一点.
有趣的是,这个设置也适用于我的Azure Web App,它应该在IIS 8.0上运行,所以我的问题是Azure Web Apps实际运行的是什么版本的IIS?
编辑:从下面的所有评论看来,Azure Web Apps似乎在IIS 8.0上运行,所以我重新说出我的问题:为什么removeServerHeader在IIS 8.0上运行时在Azure Web App中工作?
我有一个带有hello world endpoint的Web服务,如下所示:
let app =
choose [
GET >=>
choose [
path "/hello" >=> OK "Hello World!"
pathScan "/hello/%s" (fun name -> OK (sprintf "Hello World from %s" name)) ]
NOT_FOUND "Not found" ]
[<EntryPoint>]
let main argv =
startWebServer defaultConfig app
0
Run Code Online (Sandbox Code Playgroud)
现在我想添加一个可以处理这样的路由的额外端点:
http://localhost:8083/hello/{name}?lang={lang}
此路由应适用于以下URL:
但它不应该工作
HTTP://本地主机:8083 /你好/ FooBar的/ EN-GB
可选参数只能在查询参数字符串中使用,而不能在路径中使用.
知道如何用Suave实现这一目标吗?
我正在使用一个用C#编写的库,并使用async / await模式。在C#中,我可以用调用它来等待某些东西,ConfigureAwait(false)但是当我从F#使用库时,我看不到做相同事情的方法吗?
目前,我确实SomeMethodAsync() |> Async.AwaitTask将其转换为AsyncF#工作流程,但是ConfigureAwait(false)调用时我该如何与F#一样SomeMethodAsync呢?
编辑:
在F#Slack频道中提供了一些出色的帮助,并进行了一些附加的搜索,我在这里找到了关于如何切换上下文的很好的解释:http : //tomasp.net/blog/async-non-blocking-gui.aspx/
我有一些关于扩展Docker容器的基本问题:
我有5个不同的应用程序.它们没有相互连接.在拥有容器之前,我会为每个VM运行1个应用程序,并在云中单独调整它们.
现在使用容器我可以在VM上获得隔离,所以现在我可以运行一个带有5个docker容器的主机,其中每个应用程序都在自己的容器中隔离.
只要我的主机上有足够的资源,我可以随着流量的增长或缩小而单独扩展和缩小这些容器.例如,我有3个容器运行app 1,但只有1个容器运行app 2.
在高峰时段,应用程序3获得了大量流量,我需要启动第二个主机,该主机仅运行应用程序3的容器.
我的第一个问题是,如果上述内容对我所说的内容有所了解,或者我是否误解了某些内容.我的第二个问题是目前有哪些技术可以自动完成所有这些工作.我需要一个负载均衡器和一个能够实现上述场景的自动缩放组,而无需我进行手动干预.
我查看了AWS ECS,并且我不太确定它是否能够满足我的需求,如上所述.
有谁知道如何实现这一目标,还是有更好的方法来管理和扩展我缺少的5个应用程序?
更新:
通过Twitter,我被指向Kubernetes,特别是关于Horizontal Pod Autoscaler的文档.
也可能对其他人有用.随着我的了解,我会更新这个问题.
我有以下控制台应用程序:
using System;
using System.IO;
using System.Xml.Serialization;
using Newtonsoft.Json;
namespace OutputApp
{
public class Foo
{
public object Value1 { get; set; }
public string Value2 { get; set; }
}
public class Bar
{
public int Arg1 { get; set; }
public double Arg2 { get; set; }
}
class Program
{
public static Foo CreateFooBar()
{
return new Foo
{
Value1 = new Bar
{
Arg1 = 123,
Arg2 = 99.9
},
Value2 = "Test"
};
}
public …Run Code Online (Sandbox Code Playgroud) 在 Google Kubernetes Engine 中创建全新的 Kubernetes 集群后,我在 Google Cloud 日志记录中看到许多与指标代理相关的错误。
我在版本 上的现有集群上遇到了这个问题1.18.x。1.19.x然后我在建议后升级到这可以修复它。但是,问题仍然存在,所以我升级了1.20.x,但仍然没有任何变化。
最终,我使用最新的 Kubernetes 版本创建了一个新集群,但仍然看到之后立即记录了数百个错误:
gcloud beta container clusters create "my-cluster-1" \
--project "my-project-1" \
--zone "europe-west2-a" \
--no-enable-basic-auth \
--release-channel "rapid" \
--cluster-version "1.20.2-gke.2500" \
--machine-type "e2-standard-2" \
--image-type "COS_CONTAINERD" \
--disk-type "pd-standard" \
--disk-size "100" \
--metadata disable-legacy-endpoints=true \
--scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" \
--num-nodes "1" \
--enable-stackdriver-kubernetes \
--enable-private-nodes \
--master-ipv4-cidr "172.16.0.0/28" \
--enable-ip-alias \
--network "projects/my-project-1/global/networks/default" \
--subnetwork "projects/my-project-1/regions/europe-west2/subnetworks/default" \ …Run Code Online (Sandbox Code Playgroud) c# ×3
f# ×2
.net-core ×1
asp.net ×1
asp.net-core ×1
async-await ×1
asynchronous ×1
azure ×1
docker ×1
iis ×1
instagram ×1
json ×1
json.net ×1
kubernetes ×1
routing ×1
scalability ×1
suave ×1
web-config ×1
xml ×1