簡體   English   中英

我無法從 UWA 應用程序連接到 SQL 服務器,但我可以使用 WinForms 應用程序

[英]I can't connect to a SQL Server from a UWA app, but I can with a WinForms app

我構建了一個小型通用 Windows 應用程序(C#),但我無法連接到我的 SQL 服務器。 異常內容如下:

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

一小段代碼很簡單:

try
{
    using (SqlConnection conn = new SqlConnection(GetConnectionString()))
    {
        await conn.OpenAsync();

        if (conn.State == System.Data.ConnectionState.Open)
        {
            using (var cmd = conn.CreateCommand())
            {
                cmd.CommandText = getAllRunSheetsQuery;

                using (var reader = await cmd.ExecuteReaderAsync())
                {
                    while (await reader.ReadAsync())
                    {
                        var runNumber = reader.GetInt32(0);
                    }
                }
            }
        }
    }
}
catch (Exception eSql)
{
    System.Diagnostics.Debug.WriteLine($"Exception: {eSql.Message} {eSql.InnerException?.Message}");
    throw;
}

連接字符串是:

Persist Security Info=False;Application Name=XBAR_Digital_Form;Connect Timeout=2;server=wcsql.wc.com;database=ppd_general_use;User ID=*******;Password=********;

我還嘗試了各種其他連接字符串選項來連接到 SQL 服務器版本 2012。

連接超時后,在“await conn.OpenAsync()”處引發異常。 我已經通過調試確認 GetConnectionString() 方法正確地傳遞了字符串。

奇怪的是,我可以用完全相同的連接字符串制作的標准 Windows Form 應用程序連接得很好。 我使用相同的通用方法在兩個應用程序上使用 System.Data.Sqlclient 進行連接。 我可以從任何其他應用程序(如 Excel 或 Microsoft SQL Server Management Studio)連接到服務器

我發現了問題。

我使用 Windows Template Studio 來創建項目。 我查看了我的 Package.appxmanifest 並轉到功能,發現“私有網絡(客戶端和服務器)”未啟用。 啟用並重建后,連接完美無缺。


無法訪問網絡上的服務器,您必須允許遠程連接添加 TCP 和 UDP

  • 打開文件資源管理器發布此路徑“控制面板\所有控制面板項目\Windows Defender 防火牆”
  • 在左側選擇高級設置
  • 添加新的入站規則 TCP 和端口 1433
  • 添加新的入站規則 UDP 和端口 1434

對出站做同樣的事情

暫無
暫無

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

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