2013-01-24 33 views
7

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)

  1. Thay đổi ConnectionString cho ADService trong web.config của tôi từ lớp nhập của tôi không?

  2. 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?

  3. 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!;)

+0

Bạn không có DNS? – BlackICE

+0

Tôi * rất * xin lỗi. May mắn nhất. – MikeTheLiar

+0

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

Trả lời

5

Bạn sẽ không muốn thay đổi chuỗi kết nối hiện có. Thay vào đó, bạn muốn thay đổi chuỗi kết nối mà Lớp Truy cập Dữ liệu của bạn đang sử dụng để gọi các ngăn xếp dịch vụ khác nhau. Sau đó bạn có thể chọn một chuỗi kết nối tại thời gian chạy dựa trên bất kỳ thông số đầu vào nào bạn muốn sử dụng. trong trường hợp của bạn có thể là dải IP.

asp.net mvc multiple connection strings

Handling multiple connection strings in ONE DataAccess Layer

http://msdn.microsoft.com/en-us/library/aa479086.aspx

Bài viết microsoft là đặc biệt thú vị vì nó thực sự có một cái nhìn kiến ​​trúc tại mô hình thích hợp để giải quyết các tình huống khó xử như của bạn. Tôi nghĩ rằng bạn đã bị mắc kẹt với đầu ngắn của thanh! May mắn nhất!

+0

Cảm ơn sự giúp đỡ của bạn. Tôi đoán câu trả lời là mặc dù tôi cần phải đi xa một tìm hiểu một vài điều về .NET và C# đầu tiên! :) Vì vậy, thay đổi sẽ phải quay trở lại với việc tồn đọng cho đến khi tôi có ít nhất một ý tưởng mơ hồ về cách làm, những gì tôi muốn làm, trong môi trường này! lol – user2008415

+0

@ user2008415 Bạn được chào đón! Bạn đang đối phó với một số công cụ thách thức ngay lập tức ra khỏi con dơi và tôi hy vọng bạn tìm thấy tất cả các câu trả lời bạn đang tìm kiếm! Tốt nhất của may mắn và cảm ơn bạn đã chấp nhận câu trả lời của tôi. –

0

Không thể sửa đổi Web.config tại Thời gian chạy. Tôi sẽ đề nghị thiết lập một số loại cờ thông qua một liên kết đăng nhập hoặc combobox trên trang web để mọi người sử dụng để chọn nơi họ muốn đăng nhập. Nó không phải là công việc của máy chủ để tìm ra những gì người dùng muốn làm.

Các vấn đề liên quan