รูปแบบของสตริงการเริ่มต้นไม่สอดคล้องกับข้อกำหนดเริ่มต้นที่ดัชนี 0


142

ฉันมีแอปพลิเคชัน ASP.Net ซึ่งทำงานได้ดีบนเครื่องพัฒนาท้องถิ่นของฉัน

เมื่อฉันเรียกใช้แอปพลิเคชันนี้แบบออนไลน์จะแสดงข้อผิดพลาดต่อไปนี้

รูปแบบของสตริงการเริ่มต้นไม่สอดคล้องกับข้อกำหนดเริ่มต้นที่ดัชนี 0


1
คุณอาจโทรหรือเชื่อมต่อ sql ที่ไม่ดี หากคุณใช้ google it blogs.msdn.com/b/jongallant/archive/2009/05/02/…
Aristos

1
คำตอบที่ได้รับการโหวตมากที่สุดที่stackoverflow.com/questions/9040266/ …ดูเหมือนว่าจะแม่นยำกว่าคำตอบที่ได้รับการโหวตมากที่สุดที่นี่: แม้ว่าสตริงการเชื่อมต่อที่คุณใช้ในการพัฒนาอาจใช้งานได้ สิ่งนี้อาจล้มเหลว เช่นคนที่ถามคำถามนั้นพบว่าการเชื่อมต่อเป็น "$ (ReplacableToken_mcn-Web.config การเชื่อมต่อ String_0)" ซึ่งบ่งชี้การแทนที่ที่ควรเกิดขึ้นเนื่องจากส่วนหนึ่งของการเผยแพร่ไม่ได้เกิดขึ้น
divega

คำตอบ:


183

ตรวจสอบสตริงการเชื่อมต่อของคุณ ถ้าคุณต้องการความช่วยเหลือตรวจสอบเชื่อมต่อสตริงซึ่งมีรายการของคนที่ใช้กันทั่วไป

สตริงการเชื่อมต่อที่ใช้กันทั่วไป:

SQL Server 2012

ความปลอดภัยมาตรฐาน

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

การเชื่อมต่อที่เชื่อถือได้

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

การเชื่อมต่อกับอินสแตนซ์ของ SQL Server

ไวยากรณ์ชื่อเซิร์ฟเวอร์ / อินสแตนซ์ที่ใช้ในตัวเลือกเซิร์ฟเวอร์จะเหมือนกันสำหรับสตริงการเชื่อมต่อเซิร์ฟเวอร์ SQL ทั้งหมด

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;

SQL Server 2005

ความปลอดภัยมาตรฐาน

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

การเชื่อมต่อที่เชื่อถือได้

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

การเชื่อมต่อกับอินสแตนซ์ของ SQL Server

ไวยากรณ์ชื่อเซิร์ฟเวอร์ / อินสแตนซ์ที่ใช้ในตัวเลือกเซิร์ฟเวอร์จะเหมือนกันสำหรับสตริงการเชื่อมต่อเซิร์ฟเวอร์ SQL ทั้งหมด

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword;

MySQL

มาตรฐาน

Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

การระบุพอร์ต TCP

Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

คำพยากรณ์

ใช้ TNS

Data Source=TORCL;User Id=myUsername;Password=myPassword;

ใช้ความปลอดภัยแบบบูรณาการ

Data Source=TORCL;Integrated Security=SSPI;

ใช้ ODP.NET โดยไม่ใช้ tnsnames.ora

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;

9
ปัญหาของฉันไม่เกี่ยวข้องกับ ConnectionString ผิด ฉันสามารถเชื่อมต่อจากเครื่องผู้พัฒนาของฉันไปยังฐานข้อมูลการผลิตและใช้งานได้ เมื่อฉันปรับใช้การตั้งค่าเดียวกันฉันได้รับข้อผิดพลาดนี้ คุณมีความคิดว่ามีอะไรผิดพลาดหรือไม่? ขอบคุณ
เดนิสเบซิค

3
อาจมีหลายสิ่งเกิดขึ้นในเดนิส ก่อนอื่นเซิร์ฟเวอร์และเครื่อง dev ของคุณอยู่ในเครือข่ายเดียวกันหรือไม่ คุณเข้าสู่ระบบประเภทใด คุณใช้พร็อกซีชนิดใดคุณอยู่หลังไฟร์วอลล์ในเซิร์ฟเวอร์ Prod หรือไม่ กำลังเข้าสู่ VPN หรือไม่?
Hanlet Escaño

2
ฉันไม่แน่ใจว่าใครเป็นผู้รับผิดชอบคือ Visual Studio, เครื่องมือสำหรับการปรับใช้เว็บหรือโฮสต์ smarterasp.net เมื่อมีการปรับใช้แอปพลิเคชันบางอย่างก็เปลี่ยนการเชื่อมต่อของฉัน ฉันเข้าถึงโดยตรงไปยัง web.config และอัปเดตด้วยตนเองและใช้งานได้ ขอบคุณสำหรับเวลาของคุณด้วย +1;)
Denis Besic

มันไม่ทำงานฉันได้ลองใส่สายเชื่อมต่อที่ถูกต้อง

มีใครเห็นคำถามนี้บ้างไหม stackoverflow.com/questions/46167682/…

18

สิ่งนี้อาจช่วยให้ใครบางคน .. รหัสผ่านของฉันมีเครื่องหมายอัฒภาคจึงพบกับปัญหานี้ดังนั้นจึงต้องเพิ่มรหัสผ่านในเครื่องหมายคำพูด มันเป็นความผิดพลาดที่ไร้สาระจริงๆ

ฉันเปลี่ยนสิ่งต่อไปนี้:

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password=pass;word" providerName="System.Data.SqlClient" />

ถึง

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='pass;word'" providerName="System.Data.SqlClient" />

ใช่นี่คือปัญหาของฉันกับรหัสผ่านของฉันมี; ดังนั้นการเพิ่ม '' แก้ไขมัน
Claudio

11

ตั้งค่าโปรเจ็กต์ที่มีDbContextคลาสของคุณเป็นโปรเจ็กต์เริ่มต้น

enable-migrationsผมได้รับข้อผิดพลาดนี้ในขณะที่โทร แม้ว่าPackage Manager Consoleฉันจะเลือกถูกต้องDefault projectมันก็ยังคงดูไฟล์ web.config ของโครงการเริ่มต้นนั้นโดยที่ไม่มีสตริงการเชื่อมต่อ


4
+1 ฉันคิดว่าโครงการเริ่มต้นควรเป็นโครงการที่มีสตริงการเชื่อมต่อ นี่คือปัญหาของฉัน ขอบคุณสำหรับคำแนะนำเกี่ยวกับโครงการเริ่มต้น
Tchaps

4

ตรวจสอบให้แน่ใจว่าสตริงการเชื่อมต่อของคุณอยู่ในรูปแบบนี้:

เซิร์ฟเวอร์ = FOOSERVER; ฐานข้อมูล = BLAH_DB; pooling = false, หมดเวลาเชื่อมต่อ = 60; ความปลอดภัยแบบรวม = SSPI;

หากสตริงของคุณไม่มีserverแท็กวิธีการก็จะกลับมาพร้อมกับข้อผิดพลาดนี้


4

ผมมีปัญหาเหมือนกัน. เว็บไซต์ในพื้นที่ทำงานได้ดี แต่ในสีฟ้ามันจะล้มเหลวด้วยข้อความด้านบน

ปรากฎว่าปัญหาคือการตั้งค่าสายเชื่อมต่อใน ctor เช่นนี้:

    public DatabaseContext() 
    {
        Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
    }

ไม่ทำงานสิ่งนี้จะ:

    public DatabaseContext() : base("db")
    {
    }

เอาชนะฉัน ..


นี่เป็นสิ่งที่แปลกประหลาด แต่ก็ช่วยชีวิตฉันไว้ด้วย สำหรับบันทึกที่ "ฐานข้อมูล" เป็นชื่อของสำคัญของสตริงการเชื่อมต่อของคุณในไฟล์ config ที่ (เหมืองไม่ได้ "ฐานข้อมูล")
ไมค์

แก้ไขให้ฉันด้วย ฉันมีสตริงการเชื่อมต่อที่ถูกต้อง แต่ตั้งค่าด้วยตนเองว่า "รูปแบบของสตริงการเริ่มต้นไม่สอดคล้องกับข้อกำหนดเริ่มต้นที่ดัชนี 0"
Sardaukar

4

ตรวจสอบสตริงการเชื่อมต่อของคุณเหมือนที่ฉันลืมเพิ่ม services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));

มันทำให้เกิดข้อผิดพลาดและที่นี่เมื่อฉันเพิ่มConfiguration.GetConnectionStringจากนั้นก็แก้ปัญหาได้

เหมือนตอนนี้การเชื่อมต่อคือ:

services.AddDbContext<dbsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));

ทำงานได้ดี (ปัญหานี้แก้ไขได้สำหรับ. net core)


3

การอ้างอิงเส้นทาง sp เต็มช่วยแก้ปัญหานี้ให้ฉัน:

var command = new SqlCommand("DatabaseName.dbo.StoredProcedureName", conn)

2

ฉันแก้ไขได้โดยเปลี่ยนสตริงการเชื่อมต่อในการตั้งค่าการเผยแพร่ของ ASP.NET Web Api ของฉัน

ตรวจสอบคำตอบของฉันในโพสต์นี้: วิธีแก้ไขข้อผิดพลาด :: รูปแบบของสตริงการเริ่มต้นไม่สอดคล้องกับข้อกำหนดเริ่มต้นที่ดัชนี 0 ::


2

ฉันมีข้อผิดพลาดเดียวกัน ในกรณีของฉันนี้เป็นเพราะฉันไม่มีใบเสนอราคาปิดสำหรับรหัสผ่านในสตริงการเชื่อมต่อ

เปลี่ยนจากนี้

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password" providerName="System.Data.SqlClient" />

ถึง

<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password'" providerName="System.Data.SqlClient" />

โปรดเขียนโค้ดตัวอย่างหรืออย่างอื่นเพื่อให้คำตอบของคุณสมบูรณ์แบบ หนึ่งบรรทัดไม่ได้อธิบายทุกอย่าง
Manish Kumawat

แน่ใจ แก้ไขคำตอบของฉันด้านบน
Amer Bashoeb

1

สิ่งนี้จะเกิดขึ้นเมื่อคุณคัดลอกเว็บเพจจากโซลูชันหนึ่งไปยังอีกโซลูชันจากนั้นคุณเรียกใช้โซลูชันของคุณและพบว่ามีชื่อสตริงการเชื่อมต่อที่แตกต่างกันใน webconfig จากนั้นคุณเปลี่ยนชื่อสตริงการเชื่อมต่อในแผงคุณสมบัติในมุมมองออกแบบของหน้า

ดีกว่าที่จะเพียงแค่เปลี่ยนมันในส่วนของรหัสแทนการออกแบบ


1

ปัญหาของฉันคือฉันเพิ่มรหัสการบันทึกฐานข้อมูลลงในตัวสร้างของฉันสำหรับวัตถุ DB และสิ่งนี้ทำให้เกิดความเสียหายในโปรไฟล์การปรับใช้สีฟ้าของฉัน

FYI - ฉันทำให้ตัวอย่างนี้ง่ายขึ้นในรหัสจริงซึ่งถูกปิดใช้งานในการผลิต (แต่ยังอยู่ในรหัส)

public class MyDB : DbContext
{
    public MyDB()
    {
         this.Database.Log = x => { Debug.WriteLine(x); };
    }
}

1

ฉันพิมพ์ผิดในสตริงการเชื่อมต่อของฉัน "ฐานข้อมูล == PESitecore1_master"

<add name="master" connectionString="user id=sa;password=xxxxx;Data Source=APR9038KBD\SQL2014;Database==PESitecore1_master"/>

1

ฉันมีปัญหาเดียวกันและในที่สุดฉันก็สามารถแก้ไขได้ด้วยวิธีต่อไปนี้:

ปัญหาเกิดขึ้นในการกำหนดสตริงการเชื่อมต่อใน web.config ของฉัน

<add name="DefaultConnection" connectionString="DefaultConnection_ConnectionString" providerName="System.Data.SqlClient"/>

ข้างต้นทำงานได้อย่างสมบูรณ์แบบในพื้นที่เพราะฉันใช้ฐานข้อมูลท้องถิ่นเมื่อฉันจัดการผู้ใช้และบทบาท เมื่อฉันถ่ายโอนแอปพลิเคชันของฉันไปยัง IIS ฐานข้อมูลท้องถิ่นไม่สามารถเข้าถึงได้อีกต่อไปนอกจากนี้ฉันต้องการใช้ฐานข้อมูลของฉันใน SQL Server ดังนั้นฉันเปลี่ยนสตริงการเชื่อมต่อข้างต้นเทียบเท่ากับ SQL Server DB ต่อไปนี้:

<add name="DefaultConnection" connectionString="data source=MY_SQL_SERVER; Initial Catalog=MY_DATABASE_NAME; Persist Security Info=true; User Id=sa;Password=Mybl00dyPa$$" providerName="System.Data.SqlClient"/>

หมายเหตุ: ข้างต้นสมมติว่าคุณกำลังใช้ SQL Server เดียวกันจากกล่องโลคัลของคุณ (ในกรณีที่คุณรวมไว้ใน web.config ท้องถิ่นของคุณ - นั่นคือสิ่งที่ฉันทำในกรณีของฉัน)


1

ฉันมีปัญหาเดียวกันพบว่าการปรับใช้กับ IIS ไม่ได้ตั้งค่าสตริงการเชื่อมต่ออย่างถูกต้อง พวกเขาคือ '$ (ReplacableToken_devConnection-Web.config Connection String_0)' เมื่อดูสตริงการเชื่อมต่อของไซต์ใน IIS แทนที่จะเป็นสตริงการเชื่อมต่อจริง ฉันอัปเดตพวกเขาที่นั่นและทำงานได้ตามที่คาดหวัง


คุณช่วยอธิบายรายละเอียดเพิ่มเติมได้ไหม
TechnicalKeera

ฉันยังมีปัญหาเดียวกันและต้องทนทุกข์ทรมานจากstackoverflow.com/questions/48929891//
TechnicalKeera

1

ฉันคัดลอกและวางการกำหนดค่าสตริงการเชื่อมต่อของฉันลงในโครงการทดสอบของฉันและเริ่มทำงานกับข้อผิดพลาดนี้ สตริงการเชื่อมต่อทำงานได้ดีในโครงการ WebAPI ของฉัน นี่คือการแก้ไขของฉัน

var connection = ConfigurationManager.ConnectionStrings["MyConnectionString"];
var unitOfWork = new UnitOfWork(new SqlConnection(connection.ConnectionString));

1

ฉันลบ & quot ที่ส่วนท้ายของสตริงการเชื่อมต่อและใช้งานได้

แทน

App=EntityFramework&quot;

มือสอง

App=EntityFramework;

ตั้ง DefaultConnection เป็นด้านล่าง

<add name="DefaultConnection" connectionString="data source=(local);initial catalog=NamSdb;persist security info=True;user id=sa;password=sa;MultipleActiveResultSets=True;App=EntityFramework;" providerName="System.Data.SqlClient" />

หมายเหตุ: ในการเชื่อมต่อสายอย่ารวม:
| x | ข้อมูลเมตา: "metadata = res: // * /"
| x | คำพูดที่เข้ารหัส: "" "


0

ปัญหาของฉันไม่ใช่ว่าสตริงการเชื่อมต่อที่ฉันให้มานั้นไม่ถูกต้องหรือว่าสตริงการเชื่อมต่อใน app.config ที่ฉันคิดว่าฉันใช้นั้นผิด แต่ฉันใช้ app.config ที่ไม่ถูกต้อง


0

บางครั้งบริการ Sql Server ยังไม่ได้เริ่ม สิ่งนี้อาจสร้างข้อผิดพลาด ไปที่บริการและเริ่มต้นเซิร์ฟเวอร์ SQL สิ่งนี้ควรทำให้มันใช้งานได้ ป้อนคำอธิบายรูปภาพที่นี่


ถ้า Sql Server Express ไม่ได้เริ่มต้นคุณจะได้รับ Server Instance Exception ไม่ใช่ตัวที่ OP อธิบายไว้ในคำถามของเขา
noobprogrammer

0

สำหรับวิญญาณที่โชคร้ายอีกคนหนึ่งที่จัดการแอปพลิเคชันเว็บฟอร์มดั้งเดิมที่ใช้อินไลน์ sqldatasource พร้อมกับสตริงการเชื่อมต่อที่เก็บไว้ใน web.config คุณอาจได้รับข้อผิดพลาดนี้หากคุณเข้าถึงสตริงการเชื่อมต่อเช่น <% APSDataConnectionString%> % $ ConnectionStrings: MyConnectionString%> เรื่องนี้เกิดขึ้นกับเราเมื่ออัพเกรด. NET จาก 3.5 เป็น 4.x

<asp:DropDownList ID="ddl" runat="server" DataSourceID="SqlDataSource1"
  DataTextField="value" DataValueField="id"></asp:DropDownList>                
<asp:SqlDataSource ID="SqlDataSource1" runat="server" 
  ConnectionString="<%$ ConnectionStrings:MyConnectionString %>"
  SelectCommand="select id, value from a_table">
</asp:SqlDataSource>

0

ในกรณีของฉันปัญหาคือว่าบนเซิร์ฟเวอร์มีการใช้ไฟล์ appsettings.json ที่แตกต่างกัน


0

ในกรณีของฉันฉันมีข้อผิดพลาดคล้ายกัน:

แอปพลิเคชันเกิดข้อยกเว้นที่ไม่สามารถจัดการได้ System.ArgumentException: รูปแบบของสตริงการเริ่มต้นไม่สอดคล้องกับข้อกำหนดเริ่มต้นที่ดัชนี 91

ฉันเปลี่ยนสตริงการเชื่อมต่อของฉันจาก:

เซิร์ฟเวอร์ = .; ฐานข้อมูล = dbname; ID ผู้ใช้ = myuserid; รหัสผ่าน = mypassword "

ถึง:

เซิร์ฟเวอร์ = .; ฐานข้อมูล = dbname; ID ผู้ใช้ = myuserid; รหัสผ่าน = 'mypassword' "

และมันใช้งานได้ฉันเพิ่มเครื่องหมายคำพูดเดี่ยวให้กับรหัสผ่าน


0

ฉันมีข้อผิดพลาดนี้เช่นกันและสามารถแก้ไขได้ดังต่อไปนี้: ฉันก่อนหน้านี้เขียน connectionstring ไปยัง appsettings.json ลงในส่วนที่ฉันสร้างขึ้น (ConnectionsStrings (สังเกตเห็นพิเศษ "s") และพยายามเชื่อมต่อกับฐานข้อมูลของฉันซึ่งทำให้ ข้อผิดพลาดมันเป็นแอพพลิเคชั่น ASP.NET CORE และดังนั้นฉันต้องการเชื่อมต่อกับมันด้วยวิธี. GetConnectionString (รายละเอียดที่นี่ ) ดูเหมือนว่าวิธีนี้จะค้นหาการเชื่อมต่อโดยนัยในส่วน "ConnectionStrings" ซึ่งไม่ได้ ไม่มีอยู่เมื่อฉันเปลี่ยน / แก้ไขเป็น "ConnectionStrings" จะทำงานตามที่คาดไว้


0

อย่างที่ฉันรู้เมื่อใดก็ตามที่คุณมีสตริงการเชื่อมต่อมากกว่า 1 รายการในโซลูชันของคุณ (โครงการปัจจุบันโครงการเริ่มต้น ... ) คุณอาจประสบกับข้อผิดพลาดนี้

ลิงค์นี้อาจช่วยให้คุณ คลิก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.