VS生成的连接字符串不起作用,以及它的任何变体

问题描述 投票:0回答:1

我正在使用IIS和ASP.NET CORE部署Web应用程序。我设置了一个“appsetting.json”文件,其中包含一个到sql server的连接字符串。到目前为止,我尝试的任何变化都没有用。奇怪的是,它在我的本地机器上完美运行,但是当我部署它并发送HTTPPost时,日志文件说使用服务器上的数据库连接时出错。

好吧,我尝试了我能想到的所有变化。 Visual Studio生成的当前连接字符串是:

Data Source =(localdb)\ MSSQLLocalDB; Initial Catalog = Swap; Integrated Security = True; Connect Timeout = 30; Encrypt = False; TrustServerCertificate = FALSE; ApplicationIntent =读写; MultiSubnetFailover =假

我已经尝试将“Integrated Security”更改为False。我试图用用户ID和密码(“sa”用户)替换它。我尝试添加“初始目录”属性并将其设置为我的数据库。

我很确定应用程序的启动很好,因为当我尝试向主页发送GET请求时,一切似乎都很好。当我发送POST请求并要求DBcontext添加和SaveChanges时,它显示以下错误:

失败:Microsoft.EntityFrameworkCore.Database.Connection [20004]使用服务器上的数据库“交换”连接发生错误 '(的LocalDB)\ MSSQLLocalDB'。

这是我尝试将HTTPPost请求发送到的函数:

byte[] j = new byte[(int)Request.ContentLength];
Request.Body.Read(j, 0, (int)Request.ContentLength);
string str = Encoding.ASCII.GetString(j);
TokenSet tokenSet = new TokenSet {Token = str };
sqlTokensetData.Add<TokenSet>(tokenSet);
sqlTokensetData.SaveChanges();
HttpClient notificationSender = new HttpClient();
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, 
"https://fcm.googleapis.com/fcm/send");

request.Headers.TryAddWithoutValidation("Authorization", "key=" 
<somekey>);

request.Headers.TryAddWithoutValidation("Sender", "id=<id>");
Message pushNotification = new Message(new string[] { str }, "Success!" 
<somestring>);

request.Content = new 
StringContent(JsonConvert.SerializeObject(pushNotification)
,Encoding.UTF8,"application/json");

HttpResponseMessage output = await notificationSender.SendAsync(request);

日志文件错误:https://anotepad.com/notes/9a8jxa

我希望将“str”字符串插入到数据库中。谢谢。

sql-server iis asp.net-core
1个回答
0
投票

好吧,基本上,感谢上面的评论,我已经成功解决了这个问题。如果遇到同样的错误,您需要做什么:1。如上所述,下载SQL Server Express - https://www.microsoft.com/en-us/sql-server/sql-server-editions-express。然而,在您认为合适的情况下配置SQL Server。 2.配置sa用户,设置密码并启用它。 3.如果SQL身份验证不起作用,则在Microsoft SQL Server Management Studio中 - >右键单击服务器 - >属性 - >服务器身份验证 - >更改为SQL Server和Windows身份验证4.将连接字符串更改为:

数据源=;初始目录=用户ID = sa;密码=; Connect Timeout = 30; Encrypt = False; TrustServerCertificate = False; ApplicationIntent =读写; MultiSubnetFailover =假

它对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.