vb.net - process.Start() 不适用于 Microsoft Edge 或 Internet Explorer
问题描述
我最近更新了我的应用程序以将 oauth 用于 swagger 界面,这需要打开特定 URL 的网页并让用户授权访问。然后我监听发送到本地主机的响应并处理访问令牌等。为此,我只需调用 process.Start(URL)
这是我的代码:
Private Sub GetAuthorizationfromWeb()
Try
' Build the authorization call
Dim URL As String = ESIAuthorizeURL & "?response_type=code" & "&redirect_uri=http://"
URL &= LocalHost & ":" & LocalPort & "&client_id=" & ClientID & "&scope=" & ScopesString
Process.Start(URL)
Dim mySocket As Socket = Nothing
Dim myStream As NetworkStream = Nothing
Dim myReader As StreamReader = Nothing
Dim myWriter As StreamWriter = Nothing
myListner.Start()
mySocket = myListner.AcceptSocket() ' Wait for response
Debug.Print("After socket listen")
myStream = New NetworkStream(mySocket)
myReader = New StreamReader(myStream)
myWriter = New StreamWriter(myStream)
myWriter.AutoFlush = True
Do
AuthStreamText &= myReader.ReadLine & "|"
If AuthStreamText.Contains("code") Then
Exit Do
End If
Loop Until myReader.EndOfStream
myWriter.Write("Login Successful!" & vbCrLf & vbCrLf & "You can close this window.")
myWriter.Close()
myReader.Close()
myStream.Close()
mySocket.Close()
myListner.Stop()
Application.DoEvents()
Catch ex As Exception
Application.DoEvents()
End Try
End Sub
当 Firefox 和 Chrome 被设置为默认浏览器时,所有这些都可以正常工作。但是,当我尝试启动将 Edge 或 Internet Explorer 设置为默认浏览器的 URL 时,它只会打开一个空白网页或主页。没有尝试导航到作为参数设置的 URL。
我试图找到另一种方法来做到这一点,但基本上 process.Start 似乎是唯一的选择。出于安全原因,我不会在我的代码中嵌入网络浏览器。
有什么想法吗?
解决方案
推荐阅读
- javascript - 有没有更好的方法来管理 UseEffect 反应钩子中的挂载,然后每次都声明一个局部变量?
- arrays - 应用程序脚本:根据数组的前 3 个最大值的位置返回字符组合的函数
- object - Katalon 在循环中使用对象
- javascript - 如何解决此“forEach of undefined”错误?
- javascript - 不和谐.js | 显示来自 ID 的用户名返回 undefined
- javascript - Google OAuth resulting in server_error
- docker - 是否可以在 Mac OS Big Sur 上使用 Docker 而不是 Singularity 进行编译/制作?
- python - 如何使用 Python 将高斯拟合到我的数据(csv)文件中
- python - Python 不会写入 Key (JSON) 的所有值
- python - 从嵌套字典中的每一对中提取项目