2012-04-19 29 views
6

Tôi đã tìm kiếm thông qua các câu hỏi SO hiện có khác nhau liên quan đến vấn đề tương tự, nhưng tôi không thể tìm thấy bất kỳ điều gì liên quan đến vấn đề của mình."405 Phương pháp không được phép" - khi sử dụng ASP.NET jQuery ajax POST

Tôi có đoạn code sau jQuery:

$.ajax({ 
    url: "Index.aspx/DeclineRequest" 
    , type: 'POST' 
    , contentType: 'application/json; charset=utf-8' 
    , dataType: 'json' 
    , data: JSON.stringify({ RequestId: requestId }) 
}); 

Tôi đang sử dụng một kỹ thuật rất giống với POST dữ liệu trên một ứng dụng web ASP.NET, và điều này hoạt động tốt. Tuy nhiên, ứng dụng này đang trả lại lỗi sau:

"NetworkError: 405 Method Not Allowed - http://localhost:57255/ ....."

Tôi không thể tìm thấy bất kỳ điều gì khác biệt về 2 ứng dụng này, vì vậy, tôi nhầm lẫn là tại sao tính năng này không hoạt động.

Sự khác biệt duy nhất giữa 2 ứng dụng này mà tôi có thể nghĩ, là ứng dụng đang hoạt động là .NET 2.0 và phiên bản không hoạt động là .NET 3.5.

Tôi đã thử thêm dòng sau vào web.config của tôi, nhưng tôi vẫn nhận được cùng 405 lỗi:

<webServices> 
    <protocols> 
    <add name="HttpPost"/>  
    <add name="HttpPostLocalhost"/> 
    </protocols>  
</webServices> 

Làm thế nào tôi có thể giải quyết vấn đề này?

CẬP NHẬT (16:40): Tôi đã chuyển ứng dụng này sang IIS và lỗi 405 không còn được trả lại. Tuy nhiên môi trường phát triển của chúng tôi chỉ là localhost. Tại sao chỉ lỗi này trên localhost?

+0

bạn có thể chỉ cho chúng tôi 'phương pháp DeclineRequest' your'e? –

+0

Có phải nó tương tự như http://stackoverflow.com/questions/7430492/twitter-search-api-networkerror-405-method-not-allowed ?? –

+0

@ ŁukaszW.pl 'Phương thức DeclineRequest' đơn giản gọi là' return 'Hello World "tại thời điểm này. Tôi không nghĩ rằng đây là vấn đề khi gõ bất kỳ tên phương thức trả về cùng một lỗi. Tôi đã cố tình bỏ lỡ phương pháp trong một số bài kiểm tra để kiểm tra điều này. – Curt

Trả lời

0

url: "Index.aspx/DeclineRequest" không được url: "Index.aspx? DeclineRequest" phải không?

Xin lỗi vì đề xuất khá rõ ràng, tôi chưa thấy url giống như trước đây. Bạn đang viết lại nó?

+2

Đó là định dạng cuộc gọi WebMethod gọi phương thức DeclineRequest được định nghĩa trong codebehind Index.aspx. – Dimitri

+0

Xin cảm ơn! Tôi đã tự hỏi ... –

1

405 errors often arise with the POST method. You may be trying to introduce some kind of input form on the Web site, but not all ISPs allow the POST method necessary to process the form.

All 405 errors can be traced to configuration of the Web server and security governing access to the content of the Web site, so should easily be explained by your ISP.

http://www.checkupdown.com/status/E405.html

tôi sẽ lần lượt IIS Logging trên để kiểm tra yêu cầu. Cũng có được Fiddler để xem những gì đang xảy ra đằng sau hậu trường

+0

Tôi chỉ làm điều này thông qua 'localhost' tại thời điểm sử dụng VS 2010, vì vậy tôi không có bất kỳ Đăng nhập IIS nào. – Curt

+0

Tôi đã thấy rất nhiều mâu thuẫn giữa các cách IIS và VS làm việc. Tôi muốn thử thiết lập máy chủ IIS và đi từ đó. – Dimitri

+0

Tính năng này hoạt động tốt cho ứng dụng khác của tôi, chạy trên cùng một máy, với mã gần như giống hệt nhau. Vì vậy, cài đặt IIS dường như không phải là giải pháp. – Curt

0

kiểm tra theo yêu cầu ur gửi đến máy chủ
các thông số để declineRequest là một đối tượng với một tài sản của RequesId HOẶC một tên string (hoặc một số kiểu dữ liệu khác) RequestId cuz trong trường hợp sau u chỉ có thể gửi dữ liệu như JSON hoặc một chuỗi đơn giản như RequestId=requestId
vì vậy hãy thử thay thế JSON.stringify({ RequestId: requestId }) với một cái gì đó thích hợp hơn

+0

Thậm chí không gửi bất kỳ tham số nào, tôi cũng nhận được cùng một vấn đề – Curt

+0

chính xác là LOẠI của tham số đó ở đâu? nó là một số loại không nullable? –

+0

'Số nguyên Integer' của nó là – Curt

0

đoán của tôi là: trong văn bản yêu bạn đang nói rằng trả về nội dung sẽ JSON, nhưng bạn đang trở về chuỗi đồng bằng mà là ở định dạng không đúng ... Hãy thử trở về JSON đúng hoặc thay đổi loại nội dung văn bản đơn giản để kiểm tra ...

-3

loại bỏ mã datatype này: 'json' từ mã của bạn và chạy

+0

Đó không phải là câu trả lời đúng. datatype không có gì để làm với lỗi CORS. –

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