gpt4 book ai didi

c# - WCF 服务返回 400 错误请求

转载 作者:行者123 更新时间:2023-11-30 12:35:31 25 4
gpt4 key购买 nike

我有这个应用程序可以在本地运行,并且在部署时使用 .mdf SQL Express 数据库文件(我通常将其用于测试目的)。但是,当我将其更改为与我们的 SQL Server 2008 一起使用时,该应用程序可以正常工作,但服务却没有。

例如,如果在我的页面后面的代码中有一个按钮可以将数据添加到这样的表格中,它可以正常工作:

public static string connString = @"Data Source=server1;Initial Catalog=Project;Integrated Security=True";

protected void btnAddProj_Click(object sender, EventArgs e)
{
using (var sqlc = new SqlConnection(connString))
{
sqlc.Open();
var cmd = sqlc.CreateCommand();
int intProjectID;

// Add the project info to the database
cmd.CommandText = "INSERT INTO tblProject VALUES(@ProjName,@ProjTeam,@ProjStart,@ProjEnd)";
cmd.Parameters.Add("ProjName", System.Data.SqlDbType.NVarChar).Value = txtProjName.Text;
cmd.Parameters.Add("ProjTeam", System.Data.SqlDbType.Int).Value = ddlTeamSupported.SelectedValue;
cmd.Parameters.Add("ProjStart", System.Data.SqlDbType.NVarChar).Value = txtStartDate.Text;
cmd.Parameters.Add("ProjEnd", System.Data.SqlDbType.NVarChar).Value = txtEndDate.Text;
cmd.ExecuteNonQuery();
}
}

我的 web.config 设置为在该服务器上使用模拟并且一切正常。但是,对于我的服务,查询似乎没有返回任何内容,我收到 400 Bad Request 错误。

jquery 的代码是:

$.ajax({
type: "POST",
async: false,
url: "Services/ProjectService.svc/test",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
console.log(data);
}
});

对于服务:

[ServiceContract]
public interface IProjectService
{
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json)]
ArrayList test();
}


public static string connString = @"Data Source=server1;Initial Catalog=Project;Integrated Security=True";

public ArrayList test()
{
var sqlc = new SqlConnection(connString);
sqlc.Open();
var cmd = sqlc.CreateCommand();
cmd.CommandText = "SELECT ProjectID FROM tblProject";
var reader = cmd.ExecuteReader();

ArrayList temparray = new ArrayList();


while (reader.Read())
{
temparray.Add(reader[0]);
}
sqlc.Close();
return temparray;
}

如果我没有查询数据库,而是让服务只返回静态数据,那么它就可以正常工作。当应用程序后面的其余代码正常工作时,什么会导致我的服务无法连接到数据库?

最佳答案

来自托管 WCF 服务的数据库连接被视为远程连接,因此请确保您的连接字符串指定了身份验证方法。因此,请尝试在您的连接字符串中使用 Integrated Security=SSPI,如果这不起作用,请确保您的应用程序池的标识设置为对 SQL 服务器具有权限的域帐户。 :)

关于c# - WCF 服务返回 400 错误请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5357852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com