2009-11-03 45 views
10

Tôi đang sử dụng Visual Studio 2008 và có một khách hàng WCF hoạt động dựa trên dịch vụ WCF. Cả hai đều nằm trong cùng một giải pháp Visual Studio. Sau khi tôi đã thực hiện một thay đổi trong hợp đồng WCF của tôi, tôi muốn cập nhật các tài liệu tham khảo dịch vụ trên máy khách để thay đổi được thực hiện cho hợp đồng cũng được thực hiện trong proxy.Cập nhật dịch vụ cập nhật không hoạt động

Vấn đề của tôi là mã proxy không được tạo lại.

Khi tôi chọn để cập nhật các tài liệu tham khảo phục vụ, sau đây sẽ xảy ra:

  1. Một hộp thoại với danh hiệu "Dịch vụ tham khảo cập nhật 'tên-of-tài liệu tham khảo" được hiển thị. Hộp thoại này có thanh tiến trình.
  2. Động thái progressbar và văn bản trạng thái trong hộp thoại được đổi thành "Đang cập nhật cấu hình"
  3. Các progressbar di chuyển hơn một chút, và văn bản trạng thái được chnaged đến "Cấu hình cập nhật đầy đủ"

Hộp thoại không hiển thị văn bản "Đang tạo \ cái gì \" (không thể nhớ chính xác từ ngữ) mà tôi đã sử dụng.

Nếu tôi xóa tham chiếu dịch vụ và thêm lại, proxy được tạo đúng cách. Tôi thêm dịch vụ bằng cách sử dụng chính xác các cài đặt giống như trước đây, vì vậy tôi không nghĩ rằng đó là vấn đề tôi có thể giải quyết bằng cách thay đổi cấu hình tham chiếu dịch vụ trên máy khách.

Một điều tôi nghi ngờ có thể là vấn đề là tôi đã đổi tên wsHttpBindings mặc định trong app.config. Tôi cũng đã đổi tên các điểm cuối mặc định. Lý do đằng sau điều này là tôi cần nhiều hơn một điểm cuối và có một tên 'một số tên mặc định' và một tên có tên riêng của tôi chỉ là khó hiểu.

Sự cố khi xóa dịch vụ và thêm lại dịch vụ đó là Visual Studio thêm một ràng buộc mới trong app.config (trong số những thứ khác) không nên ở đó.

Bất kỳ ai đã gặp sự cố này trước đây? Bất cứ ai biết về một giải pháp cho nó?

Trả lời

6

Khi chúng tôi đã có vấn đề này nó thường là một trong các lỗi:

  • Kích thước của hợp đồng đã tăng lên, và bây giờ là rất lớn mà cấu hình WCF không cho phép nó được chuyển giao.
  • Một lớp mới đã được thêm vào giao diện WCF và lớp đó không được đánh dấu là có thể tuần tự hóa được.
  • Có một lỗi biên dịch mà dừng lại các mã từ việc xây dựng và do đó nó sử dụng dll cũ
+8

Rất tiếc, không ai trong số đó áp dụng cho tôi. Khi tôi xóa các tham chiếu và thêm nó một lần nữa nó hoạt động tốt. Nếu hợp đồng quá lớn hoặc có bất kỳ lỗi nào trong hợp đồng WCF, nó sẽ không hoạt động sau khi xóa/thêm hoạt động. – Nitramk

1

Vấn đề của tôi là tôi có hai phương pháp có cùng tên. Mọi thứ đều được xây dựng tốt, nhưng tôi không thể cập nhật tham chiếu dịch vụ. Khi tôi cố gắng bắt đầu chỉ dịch vụ WCF, lỗi sẽ xuất hiện.

+0

Tôi cũng gặp sự cố này. Trình biên dịch không phàn nàn khi bạn xây dựng dự án dịch vụ nhưng tham chiếu dịch vụ trong dự án người tiêu dùng sẽ không cập nhật. Tôi nhận thấy rằng nếu cửa sổ bật lên 'dịch vụ của bạn đã được lưu trữ' không xuất hiện khi cập nhật thì bản cập nhật sẽ không hoạt động. –

1

Lỗi của tôi là tôi quên thêm thuộc tính OperationContract.

+0

Điều này rất dễ bỏ lỡ. –

3

Trong trường hợp của tôi, vấn đề là nhà phát triển trước đó đã thêm tham chiếu dịch vụ bằng tên máy thay vì localhost. Vì vậy, khi tôi nói với Visual Studio để cập nhật, nó kết nối với máy tính của mình, mà không có những thay đổi. Tôi đã sửa đổi các tệp tham chiếu dịch vụ và thay thế tên máy của mình bằng localhost và nó có thể cập nhật tham chiếu.

5

tôi đã chạy vào vấn đề này với các điều kiện sau:

  1. máy trạm của chúng tôi được kết nối với một miền Active Directory (gần như mọi thứ sử dụng Windows Authentication)
  2. Các tài liệu tham khảo dịch vụ tôi đang cố gắng để bản cập nhật được lưu trữ trên máy chủ cục bộ và đang chạy dưới IIS Express (do đó người dùng Ứng dụng Pool đang chạy làm tài khoản người dùng miền của nhà phát triển)
  3. Một nhà phát triển khác đã thêm hoặc cập nhật tham chiếu cho dự án gần đây hơn tôi.

Cách duy nhất tôi đã tìm ra cách khắc phục sự cố này là chỉnh sửa tệp configuration.svcinfo cho tham chiếu dịch vụ đó (bạn sẽ cần hiển thị tất cả các tệp cho dự án để xem trong phòng thu trực quan), xác định vị trí phần sau:

userPrincipalName value="[email protected]" 

và thay đổi người dùng thành người dùng miền của riêng tôi. Sau khi lưu tệp, tôi không gặp sự cố khi cập nhật tham chiếu cho đến khi một nhà phát triển khác cập nhật tham chiếu dịch vụ (có thể sử dụng cùng một cách giải quyết). Thật không may, tôi đã không thể tìm ra một giải pháp lâu dài cho vấn đề này.

+0

Đã làm việc cho tôi. Người đàn ông tuyệt vời!! Cảm ơn. – Mayeed

0

tôi biết giải pháp này là hơi muộn, nhưng sau khi thử các giải pháp được đăng không có thành công, điều này làm việc:

Khi bạn tạo một WebService, nó tạo ra một file .dll mà bạn tham khảo như tài liệu tham khảo dịch vụ của bạn. Dll này là (như hầu hết biết) không tái tạo mỗi khi bạn thực hiện thay đổi cho tập tin .SVC. Bạn có thể thấy điều này nếu bạn đi và xem ngày sửa đổi bất động sản của dịch vụ web .dll tập tin, trong trường hợp của tôi nó đã được ba giờ tuổi!

Giải pháp của tôi là thực hiện các thay đổi thích hợp đối với liên hệ dịch vụ, lưu và xây dựng lại dự án sẽ làm cho nó tái tạo tất cả các phản ánh của bạn về các thay đổi bạn đã thực hiện đối với tệp liên hệ dịch vụ (.svc).

Sau đó, cập nhật tham chiếu dịch vụ trên ứng dụng khách và thay đổi hiển nhiên.

  • Spades
1

Highlight các dịch vụ như các dự án hoạt động, F5 để chạy nó trong VisualStudio, nó sẽ khởi động trong ứng dụng thử nghiệm dịch vụ. Dừng gỡ lỗi. Sau đó, hãy thử cập nhật tham chiếu dịch vụ của bạn - đã làm việc cho tôi.

+0

Điều này làm việc cho tôi, bấm chuột phải vào tệp .svc, bấm Duyệt với, đã chọn IE. Đóng trang, sau đó cập nhật tham chiếu và nó hoạt động. Neill – Neill

1

Hai bước đơn giản để giải quyết rằng:

  1. Run dịch vụ, sau đó ngăn chặn nó.

  2. Cập nhật dịch vụ cập nhật.

1

Tôi cũng gặp sự cố này. Đã xóa tham chiếu dịch vụ và tạo lại nó.

+0

Chỉ cần thêm nếu ai đó gặp sự cố của tôi. Việc xóa từ Visual Studio đã không hoạt động tốt, tôi đã phải xóa cả hai từ VS, và sau đó từ trình thám hiểm tệp. – omerts

0

Tôi đã gặp vấn đề tương tự. Sửa đổi một số hợp đồng dữ liệu. Đã cố gắng "Cập nhật Dịch vụ Cập nhật" và không thấy thay đổi. Đã bỏ và thêm lại dịch vụ. Vẫn không thấy thay đổi khi viết mã trong ứng dụng khách. Mở khách hàng của tôi với Reflector và thấy các loại dịch vụ đã có sự thay đổi! Vậy tại sao intellisense vẫn hiển thị các thuộc tính cũ?Khởi động lại Visual Studio và các sửa đổi cuối cùng cho thấy trong intellisense.

0

tôi đã cùng một vấn đề, điều này bởi tôi nó được gây ra bởi GIT Merge xung đột, tôi đã mất tích đoạn mã sau từ tập tin csproj tôi

<ItemGroup> 
    <None Include="Service References\<SERVICE NAME>\Reference.svcmap"> 
     <Generator>WCF Proxy Generator</Generator> 
     <LastGenOutput>Reference.cs</LastGenOutput> 
    </None> 
    </ItemGroup> 

Tôi đã thêm này Onder dòng Reference.svcmap

0

Một giải pháp cho các loại vấn đề này là nếu không gian tên của bạn bị lộn xộn trong các dự án được tham chiếu mà cả hai đều sử dụng dịch vụ. Vì vậy:

PROJECTA - Tiêu thụ Serviceâ

ProjectB - Tiêu thụ Serviceâ, Có Liên quan đến PROJECTA

Nếu bạn thay đổi Serviceâ và cập nhật ProjectB, đôi khi không gian tên có thể có thể thay đổi để nhìn vào phiên bản của dịch vụ PROJECTA của.

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