nền
Tôi đã tạo ra các dịch vụ web ASMX trong quá khứ và đã có thể truy cập vào dịch vụ từ trình duyệt web và Ajax GET yêu cầu theo quy ước địa chỉ: MyService.asmx/MyMethod?Param=xxx
Làm một WCF Web Service làm việc với GET yêu cầu
Tôi mới bắt đầu sử dụng WCF và tạo một dịch vụ web mới trong dự án ASP.NET của mình. Nó tạo ra một tệp có phần mở rộng .svc như MyService.svc.
Hiện trạng
tôi có thể tiêu thụ các dịch vụ sử dụng WcfTestClient
mà đi kèm với VS2008. Tôi cũng có thể tạo WCF Client của riêng mình bằng cách thêm một tham chiếu dịch vụ vào một dự án khác hoặc sử dụng dòng lệnh svcutil.exe
để tạo tệp proxy và cấu hình.
Vấn đề
Khi tôi cố gắng sử dụng các dịch vụ từ một trình duyệt sử dụng MyService.svc/MyMethod?MyParam=xxx
, tôi nhận được một trang trắng mà không làm lỗi.
Những gì tôi đã cố gắng
tôi đã thêm một basicHttpBinding để web.config và làm cho nó HttpGetEnabled trong cấu hình hành vi. Tôi cũng đã thêm thuộc tính [WebGet(UriTemplate = "MyMethod?MyParam={MyParam}")]
vào hợp đồng hoạt động của mình.
Tôi đã theo dõi thông tin trong câu hỏi này stack overflow khác:
REST/SOAP EndPoints for a WCF Service
Tuy nhiên, tôi hoặc là nhận được một trang trống hoặc HTTP 404 Lỗi sau khi làm theo những bước sau. Không có gì đặc biệt về mã. Tôi chỉ tham gia vào một chuỗi như một tham số và trả về "Xin chào xxx". Đây là điều cơ bản về "Hello WCF World" bằng chứng kiểu khái niệm.
CẬP NHẬT - Dưới đây là các mã có liên quan
[ServiceContract]
public interface IMyService
{
[WebGet(UriTemplate = "MyMethod/MyParam={MyParam}")]
[OperationContract]
string MyMethod(string MyParam);
}
Web.Config - System.ServiceModel Mục
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MyServiceBehavior" name="MyService">
<endpoint address=""
binding="wsHttpBinding" contract="IMyService" />
<endpoint address="MyService.svc"
binding="basicHttpBinding" contract="IMyService" />
<endpoint address="mex"
binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>
Tôi đoán tất cả những gì tôi cần là thêm endPointBehavior. Nó làm việc như một say mê. Cảm ơn bạn. – ichiban