2009-05-20 26 views
7

Im tạo một dịch vụ web đơn giản trong ứng dụng bảng điều khiển. (PersonService) đây là Program.cs của tôi bên dướithêm tham chiếu dịch vụ web vào ứng dụng bảng điều khiển

Tôi đang cố gắng thêm tham chiếu dịch vụ vào ứng dụng bảng điều khiển khác (PersonClient) làm cách nào tôi có thể thực hiện việc này? tôi đã thử thêm nó bằng cách nhấp chuột phải, thêm tham chiếu dịch vụ, trỏ đến refernce vv ... nhưng nó sẽ không hoạt động.

 [DataContract] 
     public class Person 
     { 
      [DataMember] 
      public string FirstName { get; set; } 

      [DataMember] 
      public string LastName { get; set; } 

     } 

     [ServiceContract] 
     public interface IPersonLookup 
     { 
      [OperationContract] 
      Person GetPerson(int identifier); 
     } 

     public class PersonService : IPersonLookup 
     { 
      public PersonService() 
      { 
      } 
      public Person GetPerson(int identifier) 
      { 
       Person p = new Person(); 
       p.FirstName="Jane"; 
       p.LastName="Doe"; 
       return p; 
      } 



     } 


     class Program 
     { 
      static void Main(string[] args) 
      { 
       using (ServiceHost host = new ServiceHost(typeof(PersonService))) 
       { 
        WSHttpBinding binding = new WSHttpBinding(); 
        host.AddServiceEndpoint(typeof(IPersonLookup), binding, "http://localhost:9090/PersonService"); 
        host.Open(); 
        Console.WriteLine("Listening...."); 
        Console.ReadLine(); 
       } 


      } 
     } 

Trả lời

0

Bạn có hai giao diện điều khiển exes, một trong đó chạy một ServiceHost - có đúng không? Chạy bàn điều khiển máy chủ mà không cần gỡ lỗi; sau đó trong IDE thêm tham chiếu WCF vào url. Nó sẽ làm việc, nhưng nó cần máy chủ (exe console thứ hai của bạn) để chạy khi bạn truy vấn mex.

+0

Hi Marc, tôi những gì bạn nói và tôi chỉ địa chỉ: http: // localhost: 9090/PersonService và nó mang lại cho lỗi này: Có lỗi khi tải 'http: // localhost: 9090/PersonService '. Yêu cầu không thành công với trạng thái HTTP 400: Yêu cầu không hợp lệ. Siêu dữ liệu chứa tham chiếu không thể được giải quyết: 'http: // localhost: 9090/PersonService'. Siêu dữ liệu chứa tham chiếu không thể được giải quyết: 'http: // localhost: 9090/PersonService'. Nếu dịch vụ được xác định trong giải pháp hiện tại, hãy thử tạo giải pháp và thêm lại tham chiếu dịch vụ. – raklos

+0

Khi nó đang chạy, hãy thử duyệt đến uri dịch vụ trong trình duyệt web của bạn. Nó có thể cung cấp cho bạn trang dịch vụ cho bạn biết cách thiết lập mex; Tôi không thể nhớ ra khỏi đỉnh đầu của tôi, mặc dù. –

+0

khi tôi trỏ tới http: // localhost: 9090/PersonService trong khi dịch vụ đang chạy nó cung cấp cho một trang không tìm thấy. – raklos

0

Khi bạn thêm tham chiếu webservice, bạn đã xác định không gian tên và 'tên lớp' cho dịch vụ. Bạn phải thêm tham chiếu không gian tên ("sử dụng FooNameSpace;") hoặc sử dụng tên lớp đầy đủ của dịch vụ ("FooNameSpace.BarClass ws = new FooNameSapce.BarClass()");

11

Giải pháp:

  1. Tạo một ứng dụng giao diện điều khiển sử dụng visual studio.
  2. Nhấp chuột phải vào dự án và nhấp vào "Thêm tham chiếu dịch vụ ...".
  3. Trên cửa sổ, bạn sẽ thấy nút "Nâng cao" ở dưới cùng.
  4. Nhấp vào nút và nó sẽ mở cửa sổ cài đặt tham chiếu dịch vụ. Nó có một nút ở dưới cùng được gọi là "Thêm tham khảo Web".
Các vấn đề liên quan