2012-03-21 35 views
13

i tục nhận được một ngoại lệ không giải thích đượcDịch vụ '' đã không áp dụng (không cơ sở hạ tầng) điểm cuối

Service 'EmployeeManagerImplementation.EmployeeManagerService' has zero application (non-infrastructure) 
endpoints. This might be because no configuration file was found for your application, 
or because no service element matching the service name could be found in the configuration file, or because no endpoints were defined in the service element. 

iv'e đi qua bài viết khác mà đã giải quyết vấn đề này, nhưng không ai dường như có một chính xác câu trả lời, và không giải pháp của họ làm việc cho tôi.

Service has zero application (non-infrastructure) endpoints

cách nào đây là App.config tôi

<system.serviceModel> 
    <services> 
     <service name="Some.Test.EmployeeManagerService"> 
      <endpoint address="net.tcp://localhost:8080/Service" binding="netTcpBinding" 
       bindingConfiguration="" contract="Contracts.IEmployeeManagerService" /> 
      <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/> 
     </service> 
    </services> 
</system.serviceModel> 

Hợp đồng của tôi:

[ServiceContract(Namespace="Some.Test")] 
public interface IEmployeeManagerService 
{ 
    [OperationContract] 
    string Test();  
} 

Dịch vụ của tôi:

public class EmployeeManagerService : IEmployeeManagerService 
{ 
    public string Test() 
    { 
     return "test"; 
    } 
} 

trong quảng cáo bài người liên quan được hiển thị để cung cấp cho Hợp đồng một không gian tên và sử dụng nó làm tiền tố trong app.config của tôi cho tên trong tab dịch vụ.

cũng có đề xuất để hiển thị điểm kết thúc mex ... tôi không thực sự thấy điều này như thế nào với nó nhưng tôi đã làm theo bất kỳ cách nào.

vì vậy bất kỳ ý tưởng nào về lý do điều này xảy ra? và cách thực sự giải quyết vấn đề này?

+6

o'k hóa ra nó là cần thiết để cung cấp cho các thuộc tính tên của dịch vụ tên chính xác giống như việc thực hiện bao gồm cả namespace nhờ @Johann Blais http : // stackoverflow.com/questions/5270956/service-x-has-zero-application-endpoints-trừ-i-add-an-endpoint-in-code-wh –

+2

Bạn nên thêm câu trả lời này làm câu trả lời và chấp nhận nó. – flayn

+0

tôi đặt một liên kết đến câu trả lời đã giúp tôi ... chỉ là tốt :) –

Trả lời

10

Từ bình luận của riêng bạn:

Đặt tên thuộc tính của dịch vụ với tên chính xác giống như việc thực hiện bao gồm các không gian tên

<service name="EmployeeManagerImplementation.EmployeeManagerService">

1

Tên của dịch vụ nên giống như lớp tập tin thực hiện giao diện tức là giao diện.

namespace WCFDemo 
{ 
    public interface IWorker 
    { 
    } 
} 

và giả sử bạn thực hiện nó như

namespace WCFDemo 
{ 
    public class WorkHere:Iworker 
    { 
    } 
} 

Sau đó, tên dịch vụ sẽ là <service name="WCFDemo.WorkHere">

2

Sao chép app.config từ dịch vụ để an ủi ứng dụng được lưu trữ dịch vụ

Nếu bạn đã tạo ra dịch vụ như là một dự án thư viện lớp và bạn đang sử dụng ứng dụng console để lưu trữ nó rồi chỉ cần sao chép ứng dụng. tệp cấu hình từ dịch vụ vào ứng dụng bảng điều khiển

+0

tại sao bạn nghĩ rằng app.config không được đặt ở vị trí chính xác? thậm chí tôi đã hỏi câu hỏi này cách đây 3 năm. tôi chỉ đọc nó và tôi không thấy cách bạn kết luận rằng đó là vấn đề. nhận xét đầu tiên của tôi mô tả cách tôi giải quyết nó. –

+0

Vấn đề này đã được giải quyết cho tôi. Lý do là tôi đã tách các hợp đồng dịch vụ và trình cài đặt. Vì vậy, tôi đã không nhận ra cài đặt dịch vụ của tôi cần cấu hình là tốt. Upvoting câu trả lời này. – Bassist

0

Đối với vấn đề của mình, tôi đã đặt tất cả các không gian tên chính xác. Nhưng những gì tôi không làm là thêm một điểm cuối basicHttpBinding cho bản thân dịch vụ. Xem this MSDN article, phần cấu hình XML đầu tiên cho một ví dụ.

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