2017-03-31 50 views
1

使用Microsoft Visual Studio Community - 通过Azure进行部署。错误 - 附加信息:初始化字符串的格式不符合从索引0开始的规范

我一直在这个问题上停留了5天。在尝试保存用户对测验的答案时,我仍然会收到此错误。我已经浏览了很多其他解决方案,询问同样的事情,但没有发现任何解决方案。这是完整的错误:

An exception of type 'System.ArgumentException' occurred in System.Data.dll but was not handled in user code Additional information: Format of the initialization string does not conform to specification starting at index 0.

我已经看过并重新查看我的连接字符串和代码本身,并没有发现任何错误。

这里是我的代码:

@using WebMatrix.Data; 
@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 

var Q1 = ""; 
var Q2 = ""; 
var Q3 = ""; 
var Q4 = ""; 
var Q5 = ""; 
var Q6 = ""; 
var Q7 = ""; 
var Q8 = ""; 
var Q9 = ""; 
var Q10 = ""; 
var weeknum = ""; 

if (IsPost) 
{ 
    Q1 = Request.Form["Question1"]; 
    Q2 = Request.Form["Question2"]; 
    Q3 = Request.Form["Question3"]; 
    Q4 = Request.Form["Question4"]; 
    Q5 = Request.Form["Question5"]; 
    Q6 = Request.Form["Question6"]; 
    Q7 = Request.Form["Question7"]; 
    Q8 = Request.Form["Question8"]; 
    Q9 = Request.Form["Question9"]; 
    Q10 = Request.Form["Question10"]; 
    weeknum = "1"; 




    var db = Database.OpenConnectionString("PayForPlay", "System.Data.SqlClient"); 
    var insertCommand = "INSERT INTO PayForPlay.WeeklyPredictions (WeekNumber, Question1, Question2, Question3, Question4, Question5, Question6, Question7, Question8, Question9, Question10) Values(@0, @1, @2, @3, @4, @5, @6, @7, @8, @9, @10) "; 

    db.Execute(insertCommand, weeknum, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10); 
    Response.Redirect("~/Home/Submitted"); 

这里是我的连接字符串:

<connectionStrings> 
    <add name=“PayForPlay" 
    providerName="System.Data.SqlClient" 
    connectionString="Data Source=tcp:memberships2016.database.windows.net,1433;Initial Catalog=PayForPlay;Integrated Security=False;User [email protected];Password=Annie207!;Encrypt=True;TrustServerCertificate=False;MultipleActiveResultSets=True" /> 
    <!--<add name="PayForPlay" connectionString="Data Source=memberships2016.database.windows.net;Initial Catalog=PayForPlay;Integrated Security=False;User ID=annah;Password=*********;Connect Timeout=15;Encrypt=True;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False " /> --> 
</connectionStrings> 

是评论我的连接字符串的一部分是我尝试另一个连接字符串(以下蔚蓝格式)和它没有工作。

+0

用户ID = [LoginForDb] @ [serverName]; ? – Steve

+0

[这里有一个很好的Azure连接字符串格式的参考。](https://www.connectionstrings.com/sql-azure/) – Siyual

+0

@Steve我只是试过,它仍然给我同样的错误! arrgghhhhhh – Marguerite

回答

0

WebMatrix.Data.OpenConnectionString,据我所知,需要一个完整的连接字符串,而不是存储在配置文件中的连接字符串的关键名称。

The OpenConnectionString method differs from the Open method, which uses the name of a connection string that is stored in the Web.config file. You might use the OpenConnectionString method when a connection string is programmatically generated or is provided by the user.

这就解释了为什么该方法无法将'PayForPlay'理解为连接字符串。它希望看到一个"Data Source=memberships2016....."

相反,阅读建议Open方法的文档,你可以看到:

The Open(String) method can connect to a database in two ways. The Open(String) method first searches the Web application's App_Data folder for a database file that matches the name that is passed (without the file-name extension) to the method. If no matching database file is found, the method searches the application's Web.config file for a connection string that matches name.

所以,看来你的问题应该使用Open方法与

来解决
var db = Database.Open("PayForPlay"); 
+0

非常感谢您的帮助Steve!在我修复了这个问题并将PayForPlay.WeeklyPredictions改为WeeklyPredictions之后,我得到了它的工作!我很开心 !! – Marguerite

+0

很高兴能有所帮助。作为该网站的新用户,我建议阅读[如何接受答案](https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – Steve

相关问题