Bài đăng đầu tiên, tôi là người hoàn thành .Net/C# người mới được ném vào cuối sâu!Bạn có thể thay đổi giá trị cấu hình ConnectionString khi chạy không? Hay ... tôi thậm chí cần phải?
Tôi đã thừa hưởng ứng dụng C# wed do một người nào đó đang đi làm và tôi là người duy nhất có băng thông! Nhưng không phải là kiến thức .Net, C#!
Ứng dụng được sử dụng bởi những người trên các trang web khác nhau trên toàn thế giới. Họ đăng nhập bằng cách sử dụng các chi tiết đăng nhập của công ty và như vậy họ đăng nhập vào các máy chủ khác nhau tùy thuộc vào nơi họ đang ở, (Châu Âu, Mỹ hoặc Ấn Độ).
Người đã viết ứng dụng không thể tìm ra cách chuyển ConnectionString trong web.config tùy thuộc vào vị trí, sao cho toàn bộ ứng dụng cho từng miền! Với biến thể duy nhất là một địa chỉ IP duy nhất trong web.config cho mỗi phiên bản trùng lặp của ứng dụng! Sau đó, một trang web đơn giản đưa người dùng đến phiên bản "của họ" của ứng dụng tùy thuộc vào nơi họ nói rằng họ đang ở trên thế giới!
Điều đầu tiên tôi muốn làm là chuyển sang một phiên bản duy nhất để duy trì, vì vậy tôi cần có khả năng chuyển chuỗi kết nối hoặc cách đăng nhập?
Tôi đã dành vài ngày cố gắng tìm hiểu cách tôi nhận được ConnectionString (được định nghĩa trong web.config) từ lớp Đăng nhập của tôi, chỉ để khám phá các giá trị được đặt trong web.config dường như chỉ đọc, vì vậy tôi có thể không thay đổi chúng.
Vì vậy, tôi đoán câu hỏi đầu tiên là, tôi đang sủa cây sai? Tôi có thể đặt tất cả thông tin mà AspNetActiveDirectoryMembershipProvider (xem mã sau) yêu cầu và gọi nó từ lớp đăng nhập của tôi không? Hoặc là đường ConnectionString cách thực tế Ipso để thiết lập các kết nối trong .Net/C#? Vì vậy, tôi cần phải tìm hiểu cách thay đổi/chỉ định/thêm giá trị khi chạy.
Ba khả năng tôi có thể nghĩ: - (Đầu tiên là người tôi đã mặt đất đến một Hult với)
Thay đổi ConnectionString cho ADService trong web.config của tôi từ lớp nhập của tôi không?
Thay đổi những gì AspNetActiveDirectoryMembershipProvider sử dụng, vì vậy từ lớp Đăng nhập của tôi, hãy sử dụng EMEA_ADService hoặc PACIFIC_ADService như được định nghĩa trong web.config?
- Có thể xác định một kết nối mớiString và gọi AspNetActiveDirectoryMembershipProvider tất cả từ lớp Đăng nhập của tôi, không sử dụng web.config cho kết nối này?
Dưới đây là một chút/file web.config mình tôi và lớp đăng nhập của tôi
Hom từ 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>
Đây là như xa như tôi đã có trong tôi lớp trước khi phát hiện ra rằng tôi không xuất hiện để có thể thay đổi ConnectionString!
Hom từ 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;
Bất kỳ gợi ý sẽ là rất đáng hoan nghênh!
P.S. Tôi đã yêu cầu một khóa học .Net/C# tại nơi làm việc!;)
Bạn không có DNS? – BlackICE
Tôi * rất * xin lỗi. May mắn nhất. – MikeTheLiar
Bạn có thể lắp ráp tên khi đang bay, vì vậy nếu bạn có thể xác định vị trí của mình, ví dụ: "Thái Bình Dương", sau đó bạn có thể sử dụng 'Kết nối [vị trí + '_ADService']' để có được chuỗi kết nối phù hợp. – HABO