2008-12-15 46 views
7

Tôi có dịch vụ WCF đã được lưu trữ trên Dịch vụ Windows và sử dụng điểm cuối BasicHttp để phục vụ các thiết bị Windows Mobile đã được kết nối với nó.WCF Yêu cầu không thành công với trạng thái HTTP 405: Phương thức không được phép

Vấn đề là với Trình mô phỏng thiết bị. Tôi có thể kết nối với dịch vụ và sử dụng nó mà không gặp bất kỳ sự cố nào, nhưng với một thiết bị thực tế. Tôi nhận được lỗi:

WCF The request failed with HTTP status 405: Method Not Allowed.

Tôi đã sử dụng mã sau để triển khai dịch vụ.

BasicHttpBinding basicHttpBinding = new BasicHttpBinding(); 
basicHttpBinding.UseDefaultWebProxy = false; 

m_ServiceHost.AddServiceEndpoint(typeof(IKooft), basicHttpBinding, "KooftService"); 
m_ServiceHost.Open(); 

Làm cách nào để giải quyết vấn đề này?

Trả lời

4

Kiểm tra tiện ích IIS của bạn, đặc biệt là những cho .wsdl có giá trị:

Trong IIS:

  • Nhìn vào các thuộc tính cho trang web của bạn.
  • Trong tab Thư mục chính, nhấp vào cấu hình .
  • Bấm add (con đường của tôi là "C: \ Program Files (x86) \ Common Files \ MSSOAP \ Binaries \ SOAPIS30.DLL")
  • Đặt phần mở rộng để .WSDL và cho phép "Nhận" và " bài"
  • Chọn "Script Engine" và "Xác nhận tập tin tồn tại"

đó nên là nó.

+1

Như tôi đã đề cập, nó được lưu trữ trên một ứng dụng Windows Service chứ không phải IIS. – mrtaikandi

+1

SOAPIS30.DLL bị thiếu trong hộp phát triển của tôi và tôi đang gặp sự cố tương tự. Bạn có bất cứ ý tưởng nơi tôi có thể nhận được rằng DLL từ? SDK là gì? – Danielb

+2

Để trả lời câu hỏi của riêng tôi rằng DLL đến từ Bộ công cụ SOAP của Microsoft không được chấp nhận. – Danielb

0

Khi sử dụng WCF, bạn cũng có thể cần ánh xạ loại tệp .svc tới aspnet_isapi.dll trong IIS.

1

Nếu bạn đang sử dụng một dịch vụ WCF REST, bạn nên xác định phương pháp hợp đồng của bạn như thế này:

[OperationContract] 
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)] 
string CheckService(); 

Riêng lưu ý rằng WebInvoke thuộc tính và Method="POST".

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