本来想慢慢写总结的,结果今天来了新项目,又要忙了。
随便写点记录下好了,有个大概印象,将来也好知道去哪儿找。
标题没想好就随手写了,其实是这样的,这个项目需要连接azure虚拟机,就是ms的那个。
然后虚拟机不是可以远程连接么,你在azure上操作的时候就是点击了链接虚拟机按钮,然后会让你下载一个rdp文件,打开这个文件输入你用户名的帐号密码就能连了。
其实这个rdp文件就是个txt,里面就两行,长这样。
full address:s:××××.×××××:××××
prompt for credentials:i:1
第一段×××是云服务名,第二段域名,第三段端口。
(项目里实际做过之后才知道,azure建立虚拟机,首先要建云服务,然后是存储空间,网络,最后是虚拟机,这段当然。。。不是我写的,我想想要不要写下)
废话太多,继续说下载这个文件的事。
1.首先后台要生成这个文件的内容
VirtualMachineGetRemoteDesktopFileResponse remoteFile=ComputeManagementClient.VirtualMachines.GetRemoteDesktopFile(serviceName, serviceName, vmName); 这段直接抄必然是错的233333,我省了实例化。还有这个第二个参数是deployment名,就是部署名,我这里是和服务名一样的。
byte[] file = remoteFile.RemoteDesktopFile;
return File(new MemoryStream(file), "text/plain",vmName+ ".rdp");
这样后台就把文件内容返回了。
2.前台,也就是我被坑到的地方,主要还是ie的保护机制。
var blob = new Blob([data], {type: "text/plain"}); var fileName = vm.VMName+‘.rdp‘; var a = document.createElement("a"); document.body.appendChild(a); a.download = fileName; a.href = URL.createObjectURL(blob); try { a.click(); } catch (e) { navigator.msSaveBlob(blob, fileName); }
那个data就是后台返回的东西,最开始我是只写了a.clcik,然后过了几天- -发现ie下用不了,然后才注意到,ie禁止做这种模拟点击啊之类的操作。
于是搜了一些方法,试到msSaveBlob的时候发现可以,于是就用了这个,当然我只是了ff,chrome,和ie11,别的再出问题再说。
写完收工。