我已经完成了这里所描述的一切.但是,当我启动我的Visual Studio项目时 - 它说:"无法启动IIS Express Web服务器".指定的起始URL无效.http://dev.local/ ".顺便说一句,我可以使用cmd("以管理员身份运行",ofc)启动它:
> iisexpress /site:WebApiLocal
Run Code Online (Sandbox Code Playgroud)
所以有什么问题?我哪里错了?
PS Visual Studio已通过管理员权限启动.
根据此 AWS 文档:场景 2:具有公共和私有子网 (NAT) 的 VPC我有自己的 VPC,具有两个子网:私有子网和公共子网。在公共子网中,我部署了一个分配了 EIP 的 Ubuntu 16.04 实例。它还具有下一个安全组入站规则:
Type Protocol Port Range Source Description
SSH TCP 22 xx.xx.xx.xx/32 Home IP
Run Code Online (Sandbox Code Playgroud)
并相应出站:
Type Protocol Port Range Source Description
SSH TCP 22 sg-xxprivatexx Security group ID for instance in private subnet
Run Code Online (Sandbox Code Playgroud)
看起来不错,我可以ssh从家里到外面。没问题。
在私有子网中,我部署了另一台具有下一个安全组(入站规则)的 Ubuntu 16.04 计算机:
Type Protocol Port Range Source Description
HTTP TCP 80 sg-xxpublicxxx Security Group ID for bastion instance in public subnet
SSH TCP 22 sg-xxpublicxxx -
Run Code Online (Sandbox Code Playgroud)
并且没有出站规则(实际上它打开了 80、443 个出站端口,但我猜这不是一个有趣的部分)。我仍然可以从我的堡垒访问该虚拟机 …
目的:假装,我在基于Azure Service Fabric的Web应用程序上有一个非常受欢迎的页面(假设每5分钟有100万人).我想在数据层和前端API层之间创建某种缓存层.
解决方案:为此,我选择一个Reliable Actor只执行一个只读操作的方法:GetFrequentlyAskedPage().这个Actor有一个volatile类型,5分钟超时被Garbage Collector取代.
问题:
假设我有自己的类QueueListener<TService, TPayload>继承自BackgroundService. 它打开 TCP 连接并侦听传入消息。在每条消息上,我想初始化TService类型的服务并将其从 JSON 实例反序列化传递TPayload给它。TService将被注册为 Transient,因此这意味着作为有效负载的处理程序必须是轻量级和无状态的(在我当前的任务中)。为此,我将注入IServiceProvidermy 的构造函数QueueListener,并在它收到的每条消息上创建一个范围。这听起来像是一个计划还是我设计过度了?TService我也想避免单例。
文件说:
从单例解析范围服务是危险的。它可能会导致服务在处理后续请求时出现不正确的状态。
但我不完全确定这意味着什么。无法注入作用域服务,BackgroundService因为它具有单例生命周期。他们是否警告我停止做这样的事情?
更新#1
我解释了为什么我要为每条消息创建范围。其背后的想法是防止侦听器被消息处理阻塞,并为其他开发人员提供创建自己的处理程序并对收到的消息执行一些操作的可能性。例如,其他开发人员可以在处理时创建数据库连接,我希望在处理完成时关闭并释放它。
.net-core ×1
actor ×1
amazon-ec2 ×1
asp.net ×1
asp.net-core ×1
azure ×1
c# ×1
iis ×1
iis-express ×1
ssh ×1
ssh-tunnel ×1