2012-02-17 42 views
5

Tôi đang cố gắng để có được giá trị của dịch vụ trong ứng dụng của tôi từ app.config. Tôi phải gửi nó đến ứng dụng hiển thị URL. Một dịch vụ web mà tôi đang tiêu thụ trong ứng dụng này cũng sử dụng nó nên không thể di chuyển nó đến appSettings.Cách nhận giá trị từ các cài đặt ứng dụng?

Tôi muốn nhận giá trị này 'http://192.168.4.22:82/Service.asmx' thông qua mã C#.

<applicationSettings> 
    <SDHSServer.Properties.Settings> 
     <setting name="DOServer_WebReference1_Service" serializeAs="String"> 
     <value>http://192.168.4.22:82/Service.asmx</value> 
     </setting> 
    </SDHSServer.Properties.Settings> 
    </applicationSettings> 
+1

[System.Configuration.ConfigurationManager.GetSection()] (http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.aspx) –

+0

Hoặc theo cách [gõ mạnh mẽ hơn] (http://msdn.microsoft.com/en-us/library/aa730869 (v = vs.80) .aspx). Làm việc với ứng dụng ASP.NET nhưng không nghĩ rằng có sự khác biệt lớn. – Oybek

+0

Đoạn mã của bạn ở trên cho thấy cài đặt bạn đang cố gắng nhận được đã có * trong * các cài đặt ứng dụng mà bạn đã nói rằng bạn không muốn thực hiện. Đó là nó? –

Trả lời

8

Không chắc tôi nhận được câu hỏi,

string s = SDHSServer.Properties.Settings.DOServer_WebReference1_Service; 

sẽ giúp bạn có được nó

4

Nếu tôi hiểu bạn một cách chính xác bạn có hai Visual Studio C# các dự án. Đầu tiên (dự án A) có một thiết lập bạn muốn truy cập trong lần thứ hai (dự án B). Để làm điều đó bạn phải thực hiện các bước sau:

  • Thêm một tài liệu tham khảo từ dự án B dự án A

  • Thay đổi modifier truy cập các thiết lập i dự án A đến công cộng (mặc định là nội bộ)

    Visual Studio settings editor

  • Bây giờ bạn có thể truy cập các thiết lập trong dự án B, trong trường hợp của bạn bằng cách sử dụng tên đầy đủ SDHSServer.Properties.Settings.Default.DOServer_WebReference1_Service

Lưu ý rằng trong trình chỉnh sửa cài đặt, bạn có thể đặt giá trị cho cài đặt. Đây là giá trị mặc định cho cài đặt và giá trị này cũng được lưu trữ trong tệp App.config cho dự án. Tuy nhiên, bạn có thể ghi đè giá trị này bằng cách cung cấp một giá trị khác trong tệp App.config để thực thi ứng dụng.

Trong ví dụ này, tệp App.config cho dự án A sẽ chứa giá trị cho cài đặt là http://192.168.4.22:82/Service.asmx. Tuy nhiên, bạn có thể ghi đè điều này trong tệp App.config cho dự án B để nhận giá trị khác. Đó có lẽ không phải là những gì bạn muốn làm nhưng bạn nên biết điều này.

+0

Bạn hãy nhớ rằng bạn cần đặt công cụ sửa đổi quyền truy cập của cài đặt thành công khai để truy cập nó. –

2

tôi sử dụng mã này trong một trang web ASP.Net 4.0 để kéo dữ liệu phần ra khỏi phần 'applicationsetting':

public sealed class SiteSupport { 


    /// <summary> 
    /// Retrieve specific section value from the web.config 
    /// </summary> 
    /// <param name="configSection">Main Web.config section</param> 
    /// <param name="subSection">Child Section{One layer down}</param> 
    /// <param name="innersection">Keyed on Section Name</param> 
    /// <param name="propertyName">Element property name</param> 
    /// <returns></returns> 
    /// <example>string setting = NoordWorld.Common.Utilities.SiteSupport.RetrieveApplicationSetting("applicationSettings", "NoordWorld.ServiceSite.Properties.Settings", "ServiceWS_SrvWebReference_Service", "value")</example> 
    public static string RetrieveApplicationSetting(string configSection, string subSection, string innersection, string propertyName) { 
     string result = string.Empty; 
     HttpWorkerRequest fakeWorkerRequest = null; 
     try { 
      using (TextWriter textWriter = new StringWriter()) { 
       fakeWorkerRequest = new SimpleWorkerRequest("default.aspx", "", textWriter); 
       var fakeHTTPContext = new HttpContext(fakeWorkerRequest); 
       Configuration config = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap() { ExeConfigFilename = fakeHTTPContext.Server.MapPath(@"~/Web.config") }, ConfigurationUserLevel.None); 
       ConfigurationSectionGroup group = config.SectionGroups[configSection]; 
       if (group != null) { 
        ClientSettingsSection clientSection = group.Sections[subSection] as ClientSettingsSection; 
        if (clientSection != null) { 
         SettingElement settingElement = clientSection.Settings.Get(innersection); 
         if (settingElement != null) { 
          result = (((SettingValueElement)(settingElement.ElementInformation.Properties[propertyName].Value)).ValueXml).InnerText; 
         } 
        } 
       } 
      } 
     } catch (Exception ex) { 
      throw ex; 
     } finally { 
      fakeWorkerRequest.CloseConnection(); 
     } 
     return result; 
    } 
} 

https://www.ServiceWS.com/webservices/Golf

0

Phụ thuộc một cái gì đó như thế này.

var s = SDHSServer.Properties.Settings.Default.DOServer_WebReference1_Service; 

hoặc

var s = SDHSServer.Properties.Settings.DOServer_WebReference1_Service; 
Các vấn đề liên quan