我们的情况是,我们希望经常向许多Azure网站添加新的自定义子域,并且我们需要能够自动化该过程,以便最大限度地减少对手动干预的需求以及将某些内容搞砸的风险.
Azure Cross-Platform CLI工具和PowerShell cmdlet为我提供了足够的功能,可以将其全部编写,SSL绑定明显例外......这些网站都是仅限HTTPS的,我们添加的每个域都需要SNI SSL捆绑.
Azure管理门户允许您手动配置网站域的SSL绑定.如何使用PowerShell cmdlet或跨平台CLI工具实现相同目的?如果不可能使用这些工具中的任何一种,那么我是否有其他方法可以在我们向网站添加/删除域时编写流程脚本?
我需要通过SignalR集线器调用发送电子邮件.我不希望send同步执行,因为我不想绑定WebSocket连接,但是如果可能的话,我希望通知调用者是否有任何错误.我以为我可以在集线器中使用这样的东西(减去错误处理和我希望它做的所有其他事情):
public class MyHub : Hub {
public async Task DoSomething() {
var client = new SmtpClient();
var message = new MailMessage(/* setup message here */);
await client.SendMailAsync(message);
}
}
Run Code Online (Sandbox Code Playgroud)
但很快发现它不起作用; client.SendMailAsync调用抛出这个:
System.InvalidOperationException:此时无法启动异步操作.异步操作只能在异步处理程序或模块中启动,或者在页面生命周期中的某些事件中启动.
进一步的调查和阅读告诉我,SmtpClient.SendMailAsync是围绕EAP方法的TAP包装器,而SignalR不允许这样做.
我的问题是,有没有简单的方法直接从集线器方法发送电子邮件?
或者我唯一的选择是将电子邮件发送到其他地方吗?(例如,让集线器队列成为服务总线消息,然后一个独立服务可以处理这些消息并发送电子邮件[虽然我也有更多的工作来实现结果通知回集中的客户端];或者让集线器向发送电子邮件的Web服务发出HTTP请求.