簡體   English   中英

無法從 UWP 應用程序連接到 SQL Server Express 數據庫

[英]Cannot connect to SQL Server Express database from an UWP app

我有一個需要連接到 SQL Server Express 數據庫的 UWP 應用程序。 在我的開發盒上,我沒有任何問題。

在客戶端 PC 上,我安裝了 SQL Server Express,創建了數據庫,設置了用戶和登錄名。

當我運行應用程序並嘗試連接到數據庫時,出現錯誤:

與 SQL 服務器建立連接時發生與網絡相關或特定於實例的錯誤。
服務器未找到或無法訪問。 驗證實例名稱是否正確,並且 SQL 服務器配置為允許遠程連接。
(提供者:TCP 提供者,錯誤:40 - 無法打開與 SQL 服務器的連接)

我用來連接的代碼是:

...
using (SqlConnection connection = new SqlConnection(ConnectionStringTextBox.Text.Trim()))
{
    try
    {
        connection.Open();
        MessageBox.Show("Connected successfully!");
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}
...

在客戶端計算機上的桌面應用程序上使用相同的代碼,連接成功。

我已將 UWP 應用程序設置為使用 Windows 10 的 1809 版。

客戶端和我的開發盒都是 2004 版。

Package.appxmanifest文件檢查了以下功能:

  • 企業認證
  • 互聯網(客戶端和服務器)
  • 互聯網(客戶端)
  • 專用網絡(客戶端和服務器)

Windows 防火牆打開了正確的端口。 在 SSMS 中,我啟用了允許遠程連接,啟用了 TCP。

我不知道我做錯了什么或出了什么問題。 同樣的 UWP 應用程序在我的開發盒上運行良好。

任何建議表示贊賞。

如果您嘗試連接到同一台機器上的 SQL 服務器實例,它將無法工作,因為UWP 應用程序已被沙盒化,無法通過 TCP/UDP 連接到 localhost - 而與遠程機器的連接將成功。 我認為這很愚蠢,但這是設計使然

作為一種解決方法,您可以將 SQL 服務器配置為使用共享 Memory 或命名管道,這些方法應該可以工作。

更新:

我忘現在有一個功能可以添加到您的 AppX 清單中以啟用本地環回連接(僅適用於 TCP, 它不適用於 UDP )。

您可以嘗試此示例,了解如何在 uwp 應用程序中連接到 sql 服務器,並嘗試在您的客戶端 PC 上執行相同的步驟,希望它有效: httpsen///umicrosoft.com//數據訪問/sql-server-databases#first-set-up-your-solution

我嘗試了所有我可以在網上找到的東西,更改 sql 服務器防火牆設置,sql 服務器 tcp/ip 設置,更改 sql 服務器瀏覽器防火牆設置,它們都不適合我。

我確實讀過有人說在 UWP 中打開環回功能,但我沒有看到我擁有的目標 window 版本的選項。 最后,我終於通過運行以下命令讓它工作了

checknetisolation loopbackexempt -a -n=YourAppPackageName

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM