[英]WCF Service Failing With Method Not Allowed
我有一個JSON WCF服務,我寫了一些javascript來訪問這樣的服務,
function stuffClick2() {
$.ajax({
url: "http://192.168.54.98/JsonWCFService/Service1.svc/Post",
type: "POST",
contentType: "application/json",
data: '{"x":"1","y":"2","message":"The answer is: "}',
dataType: "html",
success: function(data) { $('body').html(data); }
});
}
我寫了一個HTML頁面,里面有上面的javascript。 HTML頁面使用IIS提供。
當我在PC上使用chrome訪問HTML頁面時,我看到這些操作按此順序發送到WCF JSON服務,
OPTIONS /JsonWCFService/Service1.svc/Post HTTP/1.1
POST /JsonWCFService/Service1.svc/Post HTTP/1.1
OPTIONS以前失敗了,但我讓OPTIONS調用返回這個標題然后使它工作,
Access-Control-Allow-Origin: *
但我上面定義的回調不起作用,
success: function(data) { $('body').html(data); }
我知道WCF服務已經返回了這樣的東西,
<b> The answer is 3 </b>
但是當調用回調時,data的值是一個空字符串。
當我在不同的瀏覽器(IE)中運行html頁面時,它只會導致POST調用,而不是OPTIONS調用,那么它可以工作。 我注意到IE警告我它存在安全隱患,並詢問我是否要繼續。
當我嘗試使用WCF為我正在制作的移動HTML應用程序實現CORS時,我遇到了這個問題。 OPTIONS是一個預檢請求,用於在調用方法之前查看方法是否可用。
這將是你的問題:
我不確定您是否使用CORS,但主體將是相同的,因為它發送OPTIONS請求然后發送POST請求。
謝謝你的答案確實讓我走上了解決問題的道路。
當我使用其中使用的ajax javascript訪問HTML頁面時,我正在使用,
http://localhost/file.html
但是如果你看一下它正在使用的javascript訪問WCF服務,
http://192.168.54.98/JsonWCFService/Service1.svc/Post
如果我兩個都做
http://mymachinename.domain.com/JsonWCFService/Service1.svc/Post
http://mymachinename.domain.com/file.html
然后它無需調用OPTIONS操作即可運行。
這並不能解釋為什么OPTIONS然后來自chrome的POST不起作用。 Chrome似乎忽略了結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.