簡體   English   中英

SQL Azure:SSL提供程序,錯誤:0-等待操作超時

[英]SQL Azure: SSL Provider, error: 0 - The wait operation timed out

我有一個.NET Web應用程序,可以從本地計算機毫無問題地連接到SQL Azure。 然后,在同一台計算機上,我在同一解決方案中創建了另一個命令行.NET應用程序,將連接字符串從web.config復制到app.config ,並引用了與Web服務器相同的程序集(我的連接/實體框架/ model層是自己的程序集),並嘗試訪問我的數據庫。 我收到以下錯誤:

Exception thrown: 'System.Data.SqlClient.SqlException' in System.Data.dll

Additional information: A connection was successfully established with the server, 
but then an error occurred during the pre-login handshake. (provider: SSL Provider,
error: 0 - The wait operation timed out.)

現在,在您指出其他問題之前,讓我提前告訴您:

  • 同一台計算機/解決方案上具有相同 .NET版本的.NET應用程序能夠使用相同的連接字符串相同的程序集/軟件包版本等訪問相同的數據庫 ,而不會出現問題。
  • 我已經清理/重建了解決方案,重新啟動了Visual Studio,並多次重新啟動了PC。
  • 我已經成功執行了netsh Winsock reset ,然后重新啟動了PC。
  • 我的電腦上沒有防病毒/防惡意軟件或防火牆。 從這個意義上講,除了Windows防火牆和內置於Windows 10的組件之外,沒有任何其他東西。 (是的,當然,沒有特別的Panda Antivirus。不是的,也沒有膨脹軟件,它是Windows 10的原始安裝,而不是OEM的安裝)
  • 我嘗試過打開和關閉Windows防火牆,似乎都沒有影響。
  • 如果有意義,該計算機將在Parallels上作為虛擬機運行。 Windows沒有可用的多個網絡適配器,因此我的Web應用程序和控制台應用程序都使用相同的“ Internet連接”。
  • 連接超時為30秒,盡管我立即收到錯誤,而不是30秒之后。 (它說它仍然成功連接了)
  • 這兩個項目都在.NET Framework 4.6上構建,並且在通過Visual Studio 2015 Update 3調試的同一台Windows 10計算機上運行。
  • 在過去的幾周里,我什至沒有碰過這個有問題的項目,而在幾周前,它曾經完美地運行過。
  • 可能有任何可疑之處:我已經安裝了Fiddler,但在以前也能正常工作的時候,我總是會安裝它。 在AFAIR的幾周內,我剛剛安裝了Steam和Visual Studio 2017 RC,但它們尚未打開。
  • 我沒有在Azure方面收到任何可疑的錯誤等。
  • 我可以使用SQL Server Management Studio使用相同的憑據訪問服務器,並且可以毫無問題地查詢數據庫。 (我在打開,關閉SSMS和/或在重新打開/不打開它的情況下都遇到相同的問題)。
  • 我已經看到無數關於同一問題的問題,但是幾乎所有問題都指向防病毒/防火牆和重置Winsock,而我已經做到了。

這是我的連接字符串,完全來自配置文件(敏感信息替換為XXXX):

<connectionStrings>
    <add name="Data" connectionString="Server=tcp:XXXX.database.windows.net,1433;Database=XXXX;User ID=XXXX@XXXX.database.windows.net;Password=XXXX;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>

請記住,在另一個項目中也使用了相同的連接字符串,並且沒有問題。

我沒主意了。 可能是什么問題?

服務器= tcp:XXXX.database.windows.net,1433;數據庫= XXXX;用戶ID=XXXX@XXXX.database.windows.net;密碼= XXXX; Trusted_Connection = False;加密= True;連接超時= 30; MultipleActiveResultSets = True; App = EntityFramework“

連接字符串似乎正常。 並且根據您的描述,控制台應用程序和Web應用程序在同一解決方案中,並且在相同的本地環境中運行,如果防火牆規則阻止應用程序連接到Azure SQL數據庫,則這兩個應用程序均不應工作。 重現該問題很困難,我創建了一個控制台應用程序來創建表,並通過Entity Framework Code First方法將記錄添加到Azure SQL數據庫中,該應用程序在我這方面工作正常。

dbcontext

class BloggingContext: DbContext
{
    public BloggingContext()
        : base("name=Data")
    {
    }

    public virtual DbSet<Blog> Blogs { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
    }

}

模型類

class Blog
{
    public Blog(){}

    public int BlogId { get; set; }

    [StringLength(200)]
    public string Name { get; set; }

    [StringLength(200)]
    public string Url { get; set; }
}

主要方法

class Program
{
    static void Main(string[] args)
    {

        using (var db = new BloggingContext())
        {
            Console.Write("Enter a name for a new Blog: ");
            var name = Console.ReadLine();

            var blog = new Blog { Name = name };
            db.Blogs.Add(blog);
            db.SaveChanges();

            var query = from b in db.Blogs
                        orderby b.Name
                        select b;

            Console.WriteLine("All blogs in the database:");
            foreach (var item in query)
            {
                Console.WriteLine(item.Name);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }

    }
}

您可以使用我的示例代碼創建一個新的控制台應用程序,以測試其是否有效。 或者,您可以在另一台計算機上運行您的應用程序,以確保是否出現相同的問題。

此外,請確保您是否可以在控制台應用程序中使用以下代碼打開數據庫連接。

static void Main(string[] args)
{
    using (var connection = new SqlConnection(
        "Server=tcp: XXXX.database.windows.net,1433;Database= XXXX;User ID= XXXX;Password= XXXX;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;MultipleActiveResultSets=True;App=EntityFramework"
        ))
    {
        connection.Open();
        Console.WriteLine("Connected successfully.");

        Console.WriteLine("Press any key to finish...");
        Console.ReadKey(true);
    }
}

暫無
暫無

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

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