我正在尝试自学一些关于Web服务的基础知识,并设置一个只访问SQL服务器并从数据库中提取项目的简单应用程序。
但是我在尝试连接时遇到了这个错误:
“命名管道提供程序,错误:40 - 无法打开与SQL Server的连接”---> System.ComponentModel.Win32Exception:找不到网络路径“
我将此连接字符串用于其他解决方案并且工作正常,但不适用于Web服务,并且在搜索Stack时我找不到适合此问题的解决方案。
<connectionStrings>
<add name="Snafoo" connectionString="Data Source=HOCHBAUM|SQLEXPRESS; Initial Catalog=Snafoo;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />
这是网络服务:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
namespace SnafooWebService
{
/// <summary>
/// Summary description for SnafooService
/// </summary>
[WebService(Namespace = "Snafoo")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class SnafooService : System.Web.Services.WebService
{
[WebMethod()]
public Snacks GetSnackByID(int ID)
{
//Retrieve connection String from Web.config
string cs = ConfigurationManager.ConnectionStrings["Snafoo"].ConnectionString;
//Create a SQL connection object
using (SqlConnection con = new SqlConnection(cs))
{
//This object executes stored procedure in SQL
SqlCommand cmd = new SqlCommand("spGetSnackByID", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter parameter = new SqlParameter("@Id", ID);
cmd.Parameters.Add(parameter);
Snacks snack = new Snacks();
//Opens the cconection
con.Open();
SqlDataReader reader = cmd.ExecuteReader();
//Retrieve column values and populate properties of snack object
while (reader.Read())
{
snack.id = Convert.ToInt32(reader["ID"]);
snack.name = reader["name"].ToString();
snack.location = reader["location"].ToString();
}
return snack;
}
}
}
}
答案 0 :(得分:0)
如果您没有使用本地SQL Server
1 - 如果SQL浏览器已启动,请检查您的服务
2 - 在SQl服务器配置管理器上检查是否启用了TCP / IP和名称管道以便能够远程访问数据库
3 - 如果你的sql server不是本地的,你可以使用IP和端口访问它,例如xxx.xxx.xxx.xxx \ SQLEXPRESS,1029,你可以在sql配置管理器中更改端口。
4 - 确保在连接字符串中输入用户名和密码(uid = sa;密码= mmmm)
希望那些笔记能帮到你