Yerel geliştirme makinemde iyi çalışan bir ASP.Net uygulamam var.
Bu uygulamayı çevrimiçi çalıştırdığımda, aşağıdaki hatayı gösterir
Başlatma dizesinin formatı, dizin 0'dan başlayan spesifikasyona uymuyor
Yerel geliştirme makinemde iyi çalışan bir ASP.Net uygulamam var.
Bu uygulamayı çevrimiçi çalıştırdığımda, aşağıdaki hatayı gösterir
Başlatma dizesinin formatı, dizin 0'dan başlayan spesifikasyona uymuyor
Yanıtlar:
Bağlantı dizenizi kontrol edin. Bununla ilgili yardıma ihtiyacınız varsa Bağlantı Dizelerini kontrol edin , yaygın olarak kullanılanların bir listesini içeren .
Yaygın Olarak Kullanılan Bağlantı Dizeleri:
Standart Güvenlik
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
Güvenilir Bağlantı
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
SQL Server örneğine bağlantı
Sunucu seçeneğinde kullanılan sunucu / örnek adı sözdizimi, tüm SQL Server bağlantı dizeleri için aynıdır.
Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;
Password=myPassword;
Standart Güvenlik
Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;
Güvenilir Bağlantı
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;
SQL Server örneğine bağlantı
Sunucu seçeneğinde kullanılan sunucu / örnek adı sözdizimi, tüm SQL Server bağlantı dizeleri için aynıdır.
Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername;Password=myPassword;
Standart
Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
TCP bağlantı noktasını belirtme
Server=myServerAddress;Port=1234;Database=myDataBase;Uid=myUsername;Pwd=myPassword;
TNS kullanma
Data Source=TORCL;User Id=myUsername;Password=myPassword;
Entegre güvenlik kullanma
Data Source=TORCL;Integrated Security=SSPI;
Tnsnames.ora olmadan ODP.NET kullanma
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;
Bu birine yardımcı olabilir .. Parolamda noktalı virgül bulunuyordu, bu yüzden bu sorunla karşı karşıya kaldım. Gerçekten aptalca bir hataydı.
Aşağıdakileri değiştirdim:
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password=pass;word" providerName="System.Data.SqlClient" />
için
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='pass;word'" providerName="System.Data.SqlClient" />
DbContext
Sınıfınızı içeren projeyi başlangıç projesi olarak ayarlayın .
Arama yaparken bu hatayı alıyordum enable-migrations
. Sağı Package Manager Console
seçmiş olsam bile Default project
, hala bağlantı dizesinin bulunmadığı o başlangıç projesinin web.config dosyasına bakıyordu.
Ben de aynı problemi yaşadım. Yerel olarak site iyi çalıştı, ancak masmavi bir şekilde yukarıdaki mesajla başarısız olur.
sorun, ctordaki linkstring'i ayarlamaktı, şöyle:
public DatabaseContext()
{
Database.Connection.ConnectionString = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
}
Çalışmazsa, bu:
public DatabaseContext() : base("db")
{
}
Beni aşar..
Eklemeyi unuttuğum gibi bağlantı dizenizi kontrol edin services.AddDbContext<dbsContext>(options => options.UseSqlServer("Default"));
Hataya neden olur ve burada eklediğimde Configuration.GetConnectionString
sorunu çözer
şimdi olduğu gibi bağlantı:
services.AddDbContext<dbsContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Default")));
(Bu sorun .net çekirdeği için çözülmüştür)
Tam sp yoluna başvurmak bu sorunu benim için çözdü:
var command = new SqlCommand("DatabaseName.dbo.StoredProcedureName", conn)
Bunu ASP.NET Web API'm yayınlama ayarlarındaki bağlantı dizesini değiştirerek çözdüm.
Bu yazıdaki cevabımı kontrol et: Hata nasıl düzeltilir :: Başlatma dizesinin biçimi 0 dizininden başlayan spesifikasyona uymuyor ::
Aynı hatayla karşılaştım. Benim durumumda, bunun nedeni, bağlantı dizesindeki parola için bir kapanış teklifinin eksik olmasıydı.
Bundan değişti
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password" providerName="System.Data.SqlClient" />
için
<add name="db" connectionString="server=local;database=dbanme;user id=dbuser;password='password'" providerName="System.Data.SqlClient" />
Bu, bir web sayfasını bir çözümden diğerine kopyaladığınızda, çözümünüzü çalıştırdığınızda ve webconfig içinde farklı bir bağlantı dizesi adı olduğunu öğrendiğinizde de olur. Sonra dikkatsizce sayfanın tasarım görünümünde özellikler panelinde bağlantı dizesinin adını değiştirin.
Tasarım yerine kod bölümünde değiştirmek daha iyidir.
Benim sorunum bir DB nesnesi için benim yapıcı için veritabanı günlüğü kodu ekledi ve bu benim masmavi dağıtım profilinde tahribat neden gibiydi.
FYI - Bu örneği basitleştirdim, gerçek kodda bu üretimde kapatıldı (ancak yine de kodda)
public class MyDB : DbContext
{
public MyDB()
{
this.Database.Log = x => { Debug.WriteLine(x); };
}
}
Bağlantı dizelerimde yazım hatası vardı "Veritabanı == PESitecore1_master"
<add name="master" connectionString="user id=sa;password=xxxxx;Data Source=APR9038KBD\SQL2014;Database==PESitecore1_master"/>
Aynı sorunu yaşadım ve sonunda şu şekilde çözmeyi başardım:
Sorun, web.config dosyamdaki bağlantı dizesi tanımındaydı.
<add name="DefaultConnection" connectionString="DefaultConnection_ConnectionString" providerName="System.Data.SqlClient"/>
Yukarıdakiler yerel olarak mükemmel çalıştı çünkü kullanıcıları ve rolleri yönettiğimde yerel bir Veritabanı kullandım. Uygulamamı IIS'ye aktardığımda yerel DB'ye artık erişilemedi, ayrıca DB'mi SQL Server'da kullanmak istiyorum. Bu yüzden yukarıdaki bağlantı dizesini aşağıdaki SQL Server DB eşdeğeri değiştirmek:
<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"/>
Not: Yukarıdaki, ayrıca, aynı SQL Server'ı yerel kutunuzdan kullanacağınızı varsayalım (yerel web.config'nize eklemeniz durumunda - tam olarak benim durumumda bunu yaptım).
Aynı sorunu yaşadım, IIS'ye dağıtımın bağlantı dizelerini doğru şekilde ayarlamadığını öğrenmeye geldim. IIS'de sitenin bağlantı dizelerini gerçek bağlantı dizesi yerine görüntülerken '$ (ReplacableToken_devConnection-Web.config Bağlantı Dizesi_0)' idi. Onları orada güncelledim ve beklendiği gibi çalıştım
Bağlantı dizesi yapılandırmamı kopyalayıp test projeme yapıştırdım ve bu hatayla çalışmaya başladım. Bağlantı dizesi WebAPI projemde iyi çalıştı. İşte benim düzeltmem.
var connection = ConfigurationManager.ConnectionStrings["MyConnectionString"];
var unitOfWork = new UnitOfWork(new SqlConnection(connection.ConnectionString));
Bağlantı dizesinin sonunda & quot komutunu kaldırdım ve çalıştı
Onun yerine
App=EntityFramework"
Kullanılmış
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" />
Not: connectionString İçermez:
| x | Meta veri bilgisi: "meta veri = res: // * /"
| x | Kodlanmış Alıntılar: "" "
Bazen Sql Server hizmeti başlatılmadı. Bu hataya neden olabilir. Hizmetler'e gidin ve Sql Server'ı başlatın. Bu işe yaramalı.
Web.config içinde depolanan bağlantı dizeleriyle birlikte satır içi sqldatasource kullanan eski bir webforms uygulamasını yöneten talihsiz bir ruh için, bağlantı dizenize <yerine <% APSDataConnectionString%> % $ ConnectionStrings: MyConnectionString%>. Bu, .NET'i 3.5'ten 4.x'e yükseltirken bize oldu.
<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>
Benim durumumda sorun sunucuda, uygulama tarafından farklı bir appsettings.json dosyası kullanılmasıydı.
Benim durumumda, benzer bir hata aldım:
Uygulama tarafından işlenmeyen bir istisna oluştu. System.ArgumentException: Başlatma dizesinin biçimi, 91 numaralı dizinden başlayarak spesifikasyona uymuyor.
Bağlantı dizgimi değiştiriyorum:
Sunucu = .; Veritabanı = dbname; Kullanıcı Kimliği = myuserid; Parola = parolam "
için:
Sunucu = .; Veritabanı = dbname; Kullanıcı Kimliği = myuserid; Parola = 'parola' '
ve işe yarıyor, şifreye tek tırnak ekledim.
Ben de bu hatayı vardı ve aşağıdaki gibi çözmek mümkün oldu: Daha önce appsettings.json için oluşturulan bağlantıları bir bağlantı içine yazdı (ConnectionsStrings (ekstra "s" dikkat) ve neden veritabanım bağlanmak için çalıştı ASP.NET CORE uygulamasıydı ve bu nedenle .GetConnectionString Yöntemi ile bağlantı kurmak istedim ( buradaki ayrıntılar) .Bu yöntem örtük olarak "ConnectionStrings" -bölümünde bir connectiontring arar. "ConnectionStrings" olarak değiştirdiğimde / düzelttiğimde beklendiği gibi çalıştı.
Bildiğim gibi, çözümünüzde 1'den fazla bağlantı dizesi (mevcut projeniz, başlangıç projeniz, ...) olduğunda, bu hatayla karşılaşabilirsiniz.
bu bağlantı tıklamanıza yardımcı olabilir