2012-02-02 34 views
10

Bất kỳ ai có thể cho tôi biết lý do tôi gặp lỗi này khi tôi cố thêm dịch vụ của mình không?WCF Test Khách hàng không thể thêm dịch vụ, không thể nhận siêu dữ liệu

Error: Cannot obtain Metadata from http://myserver/myapp . If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455 . WS-Metadata Exchange Error URI: http://myserver/myapp Metadata contains a reference that cannot be resolved: ' http://myserver/myapp '. The remote server returned an unexpected response: (405) Method Not Allowed. The remote server returned an error: (405) Method Not Allowed.HTTP GET Error URI: http://myserver/myapp There was an error downloading ' http://myserver/myapp '. The request failed with HTTP status 403: Forbidden.

Cập nhật: Tôi có điểm cuối sau đã có,

<endpoint address="mex" 
      binding="mexHttpBinding" 
      name="Metadata" 
      contract="IMetadataExchange" /> 

Tôi cũng đã những hành vi dịch vụ thiết lập:

<serviceBehaviors> 
    <behavior name="myBehavior"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
+0

Cố gắng theo dõi các video từ liên kết tôi đã đăng. Họ đã làm việc cho tôi khi tôi gặp lỗi tương tự –

Trả lời

5

I figured it out. Tôi đã sử dụng một con đường tuyệt đối trên một trong những điểm cuối của tôi và tôi đã có nhiều hơn một. Tôi đã thay đổi nó thành một con đường tương đối và sau đó tất cả mọi thứ đã làm việc.

Ngoài ra, điều này có thể xảy ra nếu dịch vụ của bạn không chạy và có thể không liên quan gì đến siêu dữ liệu. Nếu bạn có số ConfigurationErrorsException thì bạn cũng sẽ thấy kết quả này.

Tôi cũng đã có nó khi cố gắng lưu thay đổi cấu hình cho dự án và sau đó nó nói với tôi để lưu/ghi đè/bỏ qua, vv Nó đã kết thúc thêm một subtype dự án của "nhà thiết kế" và một khi tôi gỡ bỏ nó quay trở lại để làm việc đúng cách.

0

Nếu thêm điểm cuối siêu dữ liệu không phải là vấn đề của bạn. Kiểm tra thêm chi tiết thông báo lỗi. Tôi đã có một thư viện còn thiếu; "Không thể tải tập tin hoặc lắp ráp *".

tôi cần phải thay đổi các tài liệu tham khảo để sao chép Local = True

0

Tôi mới đến WCF và chỉ có một dự án giao cho tôi với các dịch vụ WCF bên trong. Tôi đã gặp vấn đề tương tự với việc sử dụng WCF Test Client trong VS2010 trên Win7. Sau khi thử tất cả các thay đổi cấu hình trong bài viết này và những người khác tôi vẫn nhận được lỗi tương tự.

Vì vậy, tôi đã từ bỏ và bắt đầu đọc trên WCF. Ở đây tôi thấy rằng VS nên được đưa ra như là quản trị viên. Đây là bài viết: Getting Started Tutorial WCF Hóa ra tôi phải khởi chạy VS2010 với 'Chạy với tư cách Quản trị viên'. Điều này đã khắc phục được sự cố và tôi đã có thể kiểm tra các dịch vụ WCF trong VS2010. Tôi đang đăng câu trả lời này trong trường hợp người khác xem xét chạy với tư cách là Quản trị viên.

7

Điều này cũng có thể xảy ra khi bạn cố trả về đối tượng lớp tùy chỉnh từ một trong các hàm và hàm đó không có thuộc tính [DataContract] trên khai báo lớp. WCF không thể tìm ra loại của bạn trở về để nó ném thông điệp tiêu chuẩn.

[Serializable] 
[DataContract] 
public class ServiceResult 
{ 
    .... 
} 
+0

Mặc dù thông báo chung nói rằng nó không thể tìm thấy siêu dữ liệu, tôi đã thử gỡ bỏ một số OperationContracts và nó hoạt động. Hóa ra, tôi đã có một DataMember kế thừa từ điển, gây ra vấn đề này. Cảm ơn. – Andrew

+0

+ 5000 từ tôi, Cảm ơn giải pháp của bạn: Thực ra tôi có một thuộc tính duy nhất chỉ đọc trong các lớp thực thể của tôi và chỉ vì siêu dữ liệu thuộc tính chỉ đọc duy nhất không được trao đổi, sau khi đánh dấu mọi thứ khác với [DataContract] và các thuộc tính với [DataMember] và loại trừ thuộc tính chỉ đọc đó mà tôi muốn đi - Cảm ơn –

0

Một số lần không có gì phải làm với siêu dữ liệu hoặc cài đặt; thay vào đó, chúng tôi có thể chỉ sử dụng 127.0.0.1 thay vì http: \ localhost \

6

Tôi gặp sự cố này, chỉ ra rằng khi tôi đổi tên tệp .svc, tham chiếu đến nó chưa được đổi tên từ Service1.svc. Chạy tìm kiếm toàn bộ dự án và thay thế .Service1 bằng tên mới của bạn.

<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.Service1" CodeBehind="MyRenamedService.svc.cs" %> 

Service="MyNamespace.Service1" nên đọc Service="MyNamespace.MyRenamedService"

+0

Tôi đã gặp vấn đề tương tự. –

+0

Vấn đề của tôi cũng vậy - cảm ơn! – Ben

0

tôi phát hiện ra rằng tôi đã có lỗi tương tự vì một DataContract mà tôi đã sử dụng mà kế thừa từ điển.Thiết lập thích hợp của DataContract phải như sau:

[CollectionDataContract(Name = "AdditionalProperties", 
          ItemName = "Property", 
          KeyName = "Key", 
          ValueName = "Value")] 
public class AdditionalProperties : Dictionary<string, string> 
{ 
} 
0

Đây là kinh nghiệm của tôi về thông báo lỗi này, có thể hữu ích cho người khác. Dịch vụ WCF của tôi đang hoạt động tốt trên windows 2008 server.I sao chép cùng một giải pháp cho máy Dev, chọn tệp .svc từ giải pháp sao cho ứng dụng khách thử nghiệm WCF có thể được bật lên.

kiểm tra WCF client mở với các lỗi không thể có được siêu dữ liệu, lắp ráp không thể được nạp, vv

chính là, lần đầu tiên tung tăng dịch vụ (http://localhost:port/Service) sau đó chỉ cố gắng kiểm tra khách hàng WCF.

0

Trong trường hợp của tôi, tôi chưa bật BindingParams.AllowHttpGet. Khi điều đó được đặt thành true, nó hoạt động ...

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