İlk gönderi, ben derin sonunda atılmış bir tam. Net/C# acemi değilim!ConnectionString yapılandırma değerini çalışma zamanında değiştirebilir misiniz? Yoksa buna ihtiyacım var mı?
İşten ayrılan birisi ve bant genişliği olan tek kişi olması nedeniyle bir C# wed uygulamasını miras aldım! Ama değil. Net, C# bilgisi!
Uygulama, dünyanın farklı yerlerinde bulunan insanlar tarafından kullanılıyor. Kurumsal giriş bilgilerini kullanarak giriş yaparlar ve bulundukları yere (Avrupa, Amerika veya Hindistan) bağlı olarak farklı sunucularda oturum açarlar.
Uygulamayı yazan kişi, yere bağlı olarak ConnectionString'i web.config'te nasıl değiştirebileceğiyle ilgili çalışma yapamadı, böylece her alan için tüm uygulama çoğaltıldı! Uygulamanın her çoğaltılmış sürümü için web.config içinde tek bir IP adresi olmak tek varyasyon ile! Daha sonra, kullanıcının dünyanın neresinde olduklarını söyledikleri yere bağlı olarak uygulamanın "kendi" sürümüne götüren basit bir web sayfası hazırladı!
Yapmak istediğim ilk şey, korumak için tek bir sürüme geçmek, bu yüzden bağlantı dizesini değiştirebilmem veya nasıl giriş yapılabileceğim?
Birkaç kez web sitemdeki ConnectionString'e (web.config dosyasında tanımlı) nasıl ulaştığımı araştırmaya çalıştım, sadece web.config dosyasında ayarlanan değerleri yalnızca okumak için okudum. Onları değiştirmeyin.
Yani ilk soru şu ki, yanlış ağacı havlıyor muyum? AspNetActiveDirectoryMembershipProvider'ın (daha sonra şifreye bakınız) gerektirdiği tüm bilgileri girip oturum sınıfımdan arayabilir miyim? Ya da ConnectionString rotası, Ipso'nun .Net/C# bağlantılarını kurmak için fiili yoludur. Bu nedenle, çalışma zamanında değeri nasıl değiştireceğimi/belirteceğimi/eklemeyi öğrenmem gerekiyor. Aklıma
Üç olasılık: -
Değişim benim Girişi sınıfından benim web.config'de AdService için ConnectionString (ilk ben bir Hult'ta zemin ettik biridir)?
AspNetActiveDirectoryMembershipProvider'ın ne kullandığını değiştirin, bu yüzden Giriş sınıfımdan, web.config dosyasında tanımlandığı şekilde EMEA_ADService veya PACIFIC_ADService'i kullanmaya başlayın.
- Yeni bir connectionString tanımlamak ve AspNetActiveDirectoryMembershipProvider'ı tümüyle benim oturum sınıfımdan aramak mümkün mü? Bu bağlantı için web.config kullanmıyor musunuz? İşte
Bunun içinde var olduğu kadar uzak olduğunu Web.config
<connectionStrings>
<add name="ADService" connectionString="LDAP://12.345.67.8" /> *---- Original ConnectionString (IP address changed)----*
<add name="EMEA_ADService" connectionString="LDAP://12.345.67.8" /> *---- Added by me playing around unsuccessfully! ----*
<add name="PACIFIC_ADService" connectionString="LDAP://12.345.67.9" /> *---- Added by me playing around unsuccessfully! ----*
~
</connectionStrings>
<authentication mode="Forms">
<forms loginUrl="~/Login.aspx" timeout="2880" /> *---- The background class for this popup (Login.aspx.cs) is where I'm currently trying to affect ConnectionString----*
</authentication>
*---- Pretty sure this is the bit that actually does the login verification----*
<membership defaultProvider="AspNetActiveDirectoryMembershipProvider">
<providers>
<clear />
<add name="AspNetActiveDirectoryMembershipProvider" type="System.Web.Security.ActiveDirectoryMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=12345678" connectionStringName="ADService" applicationName="/." description="ADService" />
</providers>
</membership>
bir benim/onun web.config dosyasının bitin ve benim Girişi sınıfının
Çelikler var benim ConnectionString değiştirmek mümkün görünmüyor bulmadan önce sınıf!
Çelikler Login.aspx.cs
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
ConnectionStringSettingsCollection connections = ConfigurationManager.ConnectionStrings; //this is now working :)
string userDomain = Environment.UserDomainName; //Probably don't need this, it seems to give the login domain on the machine. Don't know yet if that will be the users machine or the server the app runs on?
if (connections.Count != 0)
{
foreach (ConnectionStringSettings connection in connections)
{
string testname = connections["ADService"].Name;
string testConnectionString = connections["ADService"].ConnectionString;
connections["ADService"].ConnectionString = "LDAP://12.345.67.9";
testConnectionString = connections["ADService"].ConnectionString;
gelen herhangi bir ipucu çok hoş olurdu!
P.S. İş yerinde bir .NET/C# dersi talep ettim!;)
DNS'iniz yok mu? – BlackICE
Ben * üzgünüm * üzgünüm. İyi şanslar. – MikeTheLiar
Anında bir isim oluşturabilir, böylece nerede olduğunuzu belirleyebilirseniz, ör. "Pasifik", sonra doğru bağlantı dizesini elde etmek için 'Bağlantılar [location +' _ADService '] 'kullanabilirsiniz. – HABO