2012-10-09 26 views
6

Tôi đã có một dự án C# tham khảo rất nhiều dịch vụ WCF. Đối với thử nghiệm cục bộ, tôi muốn thay thế nội dung của thẻ nhận dạng sao cho nó sẽ chấp nhận bất kỳ thứ gì chạy trên máy chủ cục bộ.Chèn nhiều mục bằng Web.Config transforms

Công cụ chuyển đổi sau đây hoạt động, nhưng chỉ chèn phần tử dns vào vị trí phù hợp đầu tiên. Vì vậy, nếu tôi có 5 thiết bị đầu cuối được tham chiếu, một thiết bị sẽ có thẻ dns và các thiết bị khác sẽ có các phần tử nhận dạng rỗng.

<system.serviceModel> 
    <client> 
     <endpoint> 
     <identity> 
      <dns xdt:Transform="Insert" value="localhost"/> 
      <userPrincipalName xdt:Transform="RemoveAll" value="someIdentity" /> 
     </identity> 
     </endpoint> 
    </client> 
    </system.serviceModel> 

Làm cách nào để thay đổi tất cả các yếu tố phù hợp, không chỉ là yếu tố đầu tiên?

+0

bạn đang cố xóa tất cả các phần tử ''? –

+0

Có, và phần đó hoạt động tốt. Tuy nhiên, tôi cũng muốn thay thế các phần tử đó bằng và tôi đã không làm như vậy. Tôi đã làm việc xung quanh điều này bằng cách thực sự liệt kê tất cả các thiết bị đầu cuối bằng tay, nhưng nếu có một giải pháp thanh lịch hơn tôi rất muốn nghe nó. – Zugbo

Trả lời

2

Sử dụng thuộc tính xdt:Locator để xác định biểu thức XPath để khớp với tất cả các phần tử <identity> mà bạn muốn chèn vào.

<system.serviceModel> 
    <client> 
     <endpoint> 
     <identity xdt:Locator="XPath(//identity)"> 
      <dns xdt:Transform="Insert" value="localhost"/> 
      <userPrincipalName xdt:Transform="RemoveAll"/> 
     </identity> 
     </endpoint> 
    </client> 
    </system.serviceModel> 
+1

Điều này vẫn chỉ dường như cập nhật kết quả trùng khớp đầu tiên –

+0

Duyệt mã nguồn tại http://xdt.codeplex.com/SourceControl/latest#XmlTransform/XmlTransforms.cs dẫn tôi đến kết luận rằng điều này hiện không được hỗ trợ –

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