Проблема с доступом к базе данных веб-сервиса - PullRequest
1 голос
/ 26 декабря 2011

Я создал веб-сервис, который обращается к базе данных.И база данных, и веб-служба, т. Е. SQL-сервер и IIS, находятся на одном компьютере.

Проблема заключается в том, что при доступе к веб-службе, которая, в свою очередь, обращается к базе данных на сервере с помощью моего клиента, все работает нормально.

Но когда я получаю доступ к нему с другого компьютера, я получаю сообщение об ошибке базы данных.

Та же самая строка подключения, которая работает нормально, когда доступ к серверу не открывает соединение при удаленном доступе к веб-службе.

Любая помощь приветствуется.

[Редактировать]

Когда я обращаюсь к ней на сервере, я получаю журналы в соответствии с моим требованием, например:

ConnectionString = Server =localhost \ instancename; База данных = dbname; Uid = uid; Pwd = pwd;

И когда я получаю удаленный доступ, я получаю журналы, подобные этому:

ConnectionString = Server = localhost \ instancename; База данных= dbname; Uid = uid; Pwd = pwd;

ОШИБКА:

System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> 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: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at CMACLBilling.AuthenticationService.Service1.GetUser(String userName)
   at CMACLBilling.BusinessControllers.UserBusinessController.Authenticate(String userName, String password, Int32& errorCode)
   at CMACLBilling.LoginWindow.btnLogin_Click(Object sender, RoutedEventArgs e)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
   at System.Windows.Controls.Primitives.ButtonBase.OnClick()
   at System.Windows.Controls.Button.OnClick()
   at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
   at System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e)
   at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
   at System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e)
   at System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
   at System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
   at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

1 Ответ

1 голос
/ 26 декабря 2011

Как я уже догадался о вашей связи, вы предоставляете неверную информацию:

Проверьте строку подключения:

ConnectionString = "Server=localhost\instancename;Database=dbname;Uid=uid;Pwd=pwd;"

и ошибка Error Locating Server/Instance Specified - при установлении соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или недоступен.

localhost относится к вашей системе, на которой вы работаете. Если вы получите доступ к этому с другого компьютера, это вызовет ошибку.

Пример, приведенный ниже, помогает настроить правильную строку подключения:

<connectionStrings>

<add name=”SampleConnectionString” connectionString=”Data Source=machinename\instancename;Initial Catalog=AdventureWorks;Integrated Security=SSPI;Min Pool Size=5;Max Pool Size=60;Connect Timeout=30″ providerName=”System.Data.SqlClient”/>

</connectionStrings>

и Connect via an IP address of your server

Сервер = 190.190.200.100,1433; Сетевая библиотека = DBMSSOCN; Начальный Catalogue = myDataBase; ID пользователя = myUsername; Password = myPassword;

или

Server=IISPCName или Server= IISPCName\InstanceName

Когда я выполняю такие функции, как вы, копируете имя компьютера из свойств моего компьютера, а затем имя экземпляра.

Проверьте следующую ссылку для решения проблемы такого типа:
Устранение «Произошла ошибка, связанная с сетью или экземпляром, при установлении соединения с SQL Server…»

Примечание: Вы должны проверить настройки удаленного доступа к серверу sql, если вышеуказанное соединение не работает. Проверьте следующие ссылки, чтобы он работал:
Как настроить SQL Server 2005 для разрешения удаленных подключений
Настройки удаленного доступа для SQL Server

Ссылка на строку подключения:
Строки подключения для SQL Server 2008

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...