我試圖移植作爲SQL Server數據庫前端的Web API。 web api在Windows下工作正常,並且在部署到IIS時,可以從Windows上的.Net Core開始工作,但在從OSX或Linux中運行時會出現連接錯誤。在OS X上使用.Net代碼連接到SQL Server
從Windows中工作在Visual Studio中的連接字符串是
connectionString="data source=A\B;initial catalog=C;
persist security info=True;user id=X; password=Y;
MultipleActiveResultSets=True;App=EntityFramework"
providerName="System.Data.SqlClient"
,然後將其轉化爲連接字符串的.NET核心變異爲:
Server=A\B;Database=C;user id=X;password=Y;
該項目編譯正常,甚至可以在Windows的.Net核心下運行,但是從* nix機器運行時會崩潰。
的錯誤是:
Unhandled Exception: System.Data.SqlClient.SqlException:
A network-related or instance-specific error occurred while
establishing a connection to SQL Server. The server was not found or
was not accessible. Verify that the instance name is correct and that
SQL Server is configured to allow remote connections. (provider: TCP
Provider, error: 35 - An internal exception was caught) --->
System.AggregateException: One or more errors occurred. (No such device
or address) --->
System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No
such device or address
我可以ping的地址,但我想有效的地址(A)和服務器實例(B)的組合不具有下* nix中一個簡單的斜線工作。
你說的崩潰。究竟發生了什麼?您的Mac能否解析名稱A以指向正確的機器? – TZHX
我用更好的描述更新了這個問題。在任何情況下,我的機器確實可以ping通A,所以錯誤可能是A \ B的組合,這應該以其他方式給出? –
什麼*是*'A'? IP地址,FQDN,服務器名稱?你能用任何其他工具連接到服務器嗎?僅僅因爲你可以ping一個地址並不意味着你可以連接到一個命名實例。 –