2010-02-25 34 views
11

Tham chiếu web của chúng tôi dường như không được định nghĩa trong web.config của trang web sử dụng nó. Tôi thấy rằng có một tệp cấu hình được gọi là "Reference.map" trong thư mục "Tham khảo web" có thể chỉnh sửa, nhưng khi tôi chỉnh sửa chúng thì không có gì xảy ra. Tôi thậm chí đã đổi tên tệp WSDL trong thư mục để xem nó có nhận được tệp mới hay không. Nó đã không làm.Làm cách nào để thay đổi tham chiếu web trong trang web sản xuất .NET?

Tôi có phải thực hiện việc xây dựng chỉ để thay đổi URL của Dịch vụ web được tham chiếu không?

Trả lời

19

Bạn có thể đánh dấu tham chiếu web là URL tĩnh hoặc động. Nếu bạn chọn động thì nó sẽ thêm URL vào web.config mà bạn có thể thay đổi trong môi trường sản xuất của bạn.

Nếu nó được đánh dấu là tĩnh thì nó được biên dịch thành nhị phân và không thể thay đổi mà không cần xây dựng lại.

Nếu nó đã hoạt động thì mã sẽ tìm kiếm URL động và sau đó nếu mã không thể tìm thấy thì URL sẽ sử dụng bản gốc mặc định. Vì vậy, bạn chỉ có thể thêm một mục nhập vào cấu hình web như:

<applicationSettings> 
    <MySystem.Properties.Settings> 
     <setting name="MySystem_MyService" serializeAs="String"> 
      <value>http://mysystem/service.asmx</value> 
     </setting> 
    </MySystem.Properties.Settings> 
</applicationSettings> 
+0

tôi nhận ra sau đánh dấu điều này là câu trả lời rằng URL được đánh dấu là động, nhưng nó vẫn không có trong cấu hình web. Bất kỳ ý tưởng nào khác? – JoshBaltzell

+0

Đã thêm một số thông tin khác, về cơ bản bạn chỉ cần thêm các dòng trong web.config. Cú pháp chính xác trong đó phụ thuộc vào tham chiếu web của bạn. –

+0

Để thêm vào đó, chỉ cần xóa và thêm lại tham chiếu web có thể sẽ tạo lại web.config cho bạn. Hãy chắc chắn rằng nó không chỉ đọc hoặc bất cứ điều gì mặc dù. –

0

On Compact Framework bạn phải đọc các tập tin cấu hình trên lớp của riêng bạn WebService:

public partial class YourService : System.Web.Services.Protocols.SoapHttpClientProtocol { 

    /// <remarks/> 
    public HandTerminalService() { 
     string appSettings = string.Concat(Assembly.GetExecutingAssembly().GetName().CodeBase, ".config"); 
     XmlDocument xmlDocument = new XmlDocument(); 
     xmlDocument.Load(appSettings); 
     XmlNode xmlNode = xmlDocument.SelectSingleNode("//configuration/appSettings/add[@key = 'Proxy.YourServiceService']"); 
     if (xmlNode.Attributes["value"].Value != null) 
     { 
      this.Url = string.Concat(xmlNode.Attributes["value"].Value, ""); 
     } else 
     { 
      this.Url = "http://<IP_or_DNS-Name>:<Port>/YourService.asmx"; 
     } 
    } 
Các vấn đề liên quan