ฉันมีแอปพลิเคชัน ASP.Net ซึ่งทำงานได้ดีบนเครื่องพัฒนาท้องถิ่นของฉัน
เมื่อฉันเรียกใช้แอปพลิเคชันนี้แบบออนไลน์จะแสดงข้อผิดพลาดต่อไปนี้
รูปแบบของสตริงการเริ่มต้นไม่สอดคล้องกับข้อกำหนดเริ่มต้นที่ดัชนี 0
ฉันมีแอปพลิเคชัน ASP.Net ซึ่งทำงานได้ดีบนเครื่องพัฒนาท้องถิ่นของฉัน
เมื่อฉันเรียกใช้แอปพลิเคชันนี้แบบออนไลน์จะแสดงข้อผิดพลาดต่อไปนี้
รูปแบบของสตริงการเริ่มต้นไม่สอดคล้องกับข้อกำหนดเริ่มต้นที่ดัชนี 0
คำตอบ:
ตรวจสอบสตริงการเชื่อมต่อของคุณ ถ้าคุณต้องการความช่วยเหลือตรวจสอบเชื่อมต่อสตริงซึ่งมีรายการของคนที่ใช้กันทั่วไป
สตริงการเชื่อมต่อที่ใช้กันทั่วไป:
ความปลอดภัยมาตรฐาน
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;
ความปลอดภัยมาตรฐาน
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;
มาตรฐาน
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;
สิ่งนี้อาจช่วยให้ใครบางคน .. รหัสผ่านของฉันมีเครื่องหมายอัฒภาคจึงพบกับปัญหานี้ดังนั้นจึงต้องเพิ่มรหัสผ่านในเครื่องหมายคำพูด มันเป็นความผิดพลาดที่ไร้สาระจริงๆ
ฉันเปลี่ยนสิ่งต่อไปนี้:
<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" />
ตั้งค่าโปรเจ็กต์ที่มีDbContext
คลาสของคุณเป็นโปรเจ็กต์เริ่มต้น
enable-migrations
ผมได้รับข้อผิดพลาดนี้ในขณะที่โทร แม้ว่าPackage Manager Console
ฉันจะเลือกถูกต้องDefault project
มันก็ยังคงดูไฟล์ web.config ของโครงการเริ่มต้นนั้นโดยที่ไม่มีสตริงการเชื่อมต่อ
ตรวจสอบให้แน่ใจว่าสตริงการเชื่อมต่อของคุณอยู่ในรูปแบบนี้:
เซิร์ฟเวอร์ = FOOSERVER; ฐานข้อมูล = BLAH_DB; pooling = false, หมดเวลาเชื่อมต่อ = 60; ความปลอดภัยแบบรวม = SSPI;
หากสตริงของคุณไม่มีserver
แท็กวิธีการก็จะกลับมาพร้อมกับข้อผิดพลาดนี้
ผมมีปัญหาเหมือนกัน. เว็บไซต์ในพื้นที่ทำงานได้ดี แต่ในสีฟ้ามันจะล้มเหลวด้วยข้อความด้านบน
ปรากฎว่าปัญหาคือการตั้งค่าสายเชื่อมต่อใน ctor เช่นนี้:
public DatabaseContext()
{
Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
}
ไม่ทำงานสิ่งนี้จะ:
public DatabaseContext() : base("db")
{
}
เอาชนะฉัน ..
ตรวจสอบสตริงการเชื่อมต่อของคุณเหมือนที่ฉันลืมเพิ่ม services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));
มันทำให้เกิดข้อผิดพลาดและที่นี่เมื่อฉันเพิ่มConfiguration.GetConnectionString
จากนั้นก็แก้ปัญหาได้
เหมือนตอนนี้การเชื่อมต่อคือ:
services.AddDbContext<dbsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));
ทำงานได้ดี (ปัญหานี้แก้ไขได้สำหรับ. net core)
การอ้างอิงเส้นทาง sp เต็มช่วยแก้ปัญหานี้ให้ฉัน:
var command = new SqlCommand("DatabaseName.dbo.StoredProcedureName", conn)
ฉันแก้ไขได้โดยเปลี่ยนสตริงการเชื่อมต่อในการตั้งค่าการเผยแพร่ของ ASP.NET Web Api ของฉัน
ตรวจสอบคำตอบของฉันในโพสต์นี้: วิธีแก้ไขข้อผิดพลาด :: รูปแบบของสตริงการเริ่มต้นไม่สอดคล้องกับข้อกำหนดเริ่มต้นที่ดัชนี 0 ::
ฉันมีข้อผิดพลาดเดียวกัน ในกรณีของฉันนี้เป็นเพราะฉันไม่มีใบเสนอราคาปิดสำหรับรหัสผ่านในสตริงการเชื่อมต่อ
เปลี่ยนจากนี้
<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" />
สิ่งนี้จะเกิดขึ้นเมื่อคุณคัดลอกเว็บเพจจากโซลูชันหนึ่งไปยังอีกโซลูชันจากนั้นคุณเรียกใช้โซลูชันของคุณและพบว่ามีชื่อสตริงการเชื่อมต่อที่แตกต่างกันใน webconfig จากนั้นคุณเปลี่ยนชื่อสตริงการเชื่อมต่อในแผงคุณสมบัติในมุมมองออกแบบของหน้า
ดีกว่าที่จะเพียงแค่เปลี่ยนมันในส่วนของรหัสแทนการออกแบบ
ปัญหาของฉันคือฉันเพิ่มรหัสการบันทึกฐานข้อมูลลงในตัวสร้างของฉันสำหรับวัตถุ DB และสิ่งนี้ทำให้เกิดความเสียหายในโปรไฟล์การปรับใช้สีฟ้าของฉัน
FYI - ฉันทำให้ตัวอย่างนี้ง่ายขึ้นในรหัสจริงซึ่งถูกปิดใช้งานในการผลิต (แต่ยังอยู่ในรหัส)
public class MyDB : DbContext
{
public MyDB()
{
this.Database.Log = x => { Debug.WriteLine(x); };
}
}
ฉันพิมพ์ผิดในสตริงการเชื่อมต่อของฉัน "ฐานข้อมูล == PESitecore1_master"
<add name="master" connectionString="user id=sa;password=xxxxx;Data Source=APR9038KBD\SQL2014;Database==PESitecore1_master"/>
ฉันมีปัญหาเดียวกันและในที่สุดฉันก็สามารถแก้ไขได้ด้วยวิธีต่อไปนี้:
ปัญหาเกิดขึ้นในการกำหนดสตริงการเชื่อมต่อใน 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 ท้องถิ่นของคุณ - นั่นคือสิ่งที่ฉันทำในกรณีของฉัน)
ฉันมีปัญหาเดียวกันพบว่าการปรับใช้กับ IIS ไม่ได้ตั้งค่าสตริงการเชื่อมต่ออย่างถูกต้อง พวกเขาคือ '$ (ReplacableToken_devConnection-Web.config Connection String_0)' เมื่อดูสตริงการเชื่อมต่อของไซต์ใน IIS แทนที่จะเป็นสตริงการเชื่อมต่อจริง ฉันอัปเดตพวกเขาที่นั่นและทำงานได้ตามที่คาดหวัง
ฉันคัดลอกและวางการกำหนดค่าสตริงการเชื่อมต่อของฉันลงในโครงการทดสอบของฉันและเริ่มทำงานกับข้อผิดพลาดนี้ สตริงการเชื่อมต่อทำงานได้ดีในโครงการ WebAPI ของฉัน นี่คือการแก้ไขของฉัน
var connection = ConfigurationManager.ConnectionStrings["MyConnectionString"];
var unitOfWork = new UnitOfWork(new SqlConnection(connection.ConnectionString));
ฉันลบ & quot ที่ส่วนท้ายของสตริงการเชื่อมต่อและใช้งานได้
แทน
App=EntityFramework"
มือสอง
App=EntityFramework;
<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 | คำพูดที่เข้ารหัส: "" "
ปัญหาของฉันไม่ใช่ว่าสตริงการเชื่อมต่อที่ฉันให้มานั้นไม่ถูกต้องหรือว่าสตริงการเชื่อมต่อใน app.config ที่ฉันคิดว่าฉันใช้นั้นผิด แต่ฉันใช้ app.config ที่ไม่ถูกต้อง
บางครั้งบริการ Sql Server ยังไม่ได้เริ่ม สิ่งนี้อาจสร้างข้อผิดพลาด ไปที่บริการและเริ่มต้นเซิร์ฟเวอร์ SQL สิ่งนี้ควรทำให้มันใช้งานได้
สำหรับวิญญาณที่โชคร้ายอีกคนหนึ่งที่จัดการแอปพลิเคชันเว็บฟอร์มดั้งเดิมที่ใช้อินไลน์ 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>
ในกรณีของฉันปัญหาคือว่าบนเซิร์ฟเวอร์มีการใช้ไฟล์ appsettings.json ที่แตกต่างกัน
ในกรณีของฉันฉันมีข้อผิดพลาดคล้ายกัน:
แอปพลิเคชันเกิดข้อยกเว้นที่ไม่สามารถจัดการได้ System.ArgumentException: รูปแบบของสตริงการเริ่มต้นไม่สอดคล้องกับข้อกำหนดเริ่มต้นที่ดัชนี 91
ฉันเปลี่ยนสตริงการเชื่อมต่อของฉันจาก:
เซิร์ฟเวอร์ = .; ฐานข้อมูล = dbname; ID ผู้ใช้ = myuserid; รหัสผ่าน = mypassword "
ถึง:
เซิร์ฟเวอร์ = .; ฐานข้อมูล = dbname; ID ผู้ใช้ = myuserid; รหัสผ่าน = 'mypassword' "
และมันใช้งานได้ฉันเพิ่มเครื่องหมายคำพูดเดี่ยวให้กับรหัสผ่าน
ฉันมีข้อผิดพลาดนี้เช่นกันและสามารถแก้ไขได้ดังต่อไปนี้: ฉันก่อนหน้านี้เขียน connectionstring ไปยัง appsettings.json ลงในส่วนที่ฉันสร้างขึ้น (ConnectionsStrings (สังเกตเห็นพิเศษ "s") และพยายามเชื่อมต่อกับฐานข้อมูลของฉันซึ่งทำให้ ข้อผิดพลาดมันเป็นแอพพลิเคชั่น ASP.NET CORE และดังนั้นฉันต้องการเชื่อมต่อกับมันด้วยวิธี. GetConnectionString (รายละเอียดที่นี่ ) ดูเหมือนว่าวิธีนี้จะค้นหาการเชื่อมต่อโดยนัยในส่วน "ConnectionStrings" ซึ่งไม่ได้ ไม่มีอยู่เมื่อฉันเปลี่ยน / แก้ไขเป็น "ConnectionStrings" จะทำงานตามที่คาดไว้
อย่างที่ฉันรู้เมื่อใดก็ตามที่คุณมีสตริงการเชื่อมต่อมากกว่า 1 รายการในโซลูชันของคุณ (โครงการปัจจุบันโครงการเริ่มต้น ... ) คุณอาจประสบกับข้อผิดพลาดนี้
ลิงค์นี้อาจช่วยให้คุณ คลิก