2012-10-20 83 views
0

我正在開發一個win8應用程序,它應該使用託管在IIS上的WCF服務,但它不會... 注意:Web服務工作得很好。我在VS2012 WCF測試客戶端進行測試呢?這裏是我的代碼:如何在Windows8 HTML5/JS應用程序中使用WCF服務?

IService.cs:

using System.Linq; 
using System.Runtime.Serialization; 
using System.ServiceModel; 
using System.ServiceModel.Web; 
using System.Text; 

[ServiceContract] 
public interface IService 
{ 

[OperationContract] 
string SitePredmeti(); 

[OperationContract] 
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Xml)] 
List<Profesor> SiteProfesori(); 
} 

我做了兩個方法:一個返回XML一個回報JSON只是這樣我就可以測試一個作品。無論WS返回json還是xml,我都可以在應用程序中使用。

我使用默認的SPLIT APP TEMPLATE作爲win8中的html5/JS應用程序,無需任何更改。現在我只需要使用wcf服務,稍後我將處理數據模板。

鏈接到我的IIS託管WCF:

http://localhost/InformatorWS/Service.svc 

這裏是我試過到目前爲止:

var baseURl = "http://localhost/InformatorWS/Service.svc/SitePredmeti/"; 
var url = baseURl+Number1.value+"/"+Number2.value; 
WinJS.xhr({ url: url }).then(function (r) { 
var result = JSON.parse(r.responseText); 
ResultSpan.innerHTML = result; }); 

錯誤我來到這裏是:

{"exception":null,"error":{},"promise":{"_oncancel":null,"_nextState":null,"_state":>{"name":"error","done":null,"then":null},"_listeners":null,"_value":{},"_isException":false,"_errorId":2},"id":2}

下一個我試圖通過jQuery的ajax調用它:

$(document).ready(function() { 
     jQuery.support.cors = true; 
     //Calling WCF Service using jQuery ajax method 
     $.ajax({ 
      type: "GET", 
      async: "false", 
      url: "http://localhost/InformatorWS/Service.svc/SitePredmeti", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      processData: true, 
      success: function (result) { 
       //AjaxSucceeded(result); 
       alert('ok') 
      }, 
      error: alert('ne ok') 
     }); 
    }); 

,當我鏈接的jquery

<script type="text/javascript" src="js/jquery-ui-1.8.9.custom.min.js"></script> 
<script type="text/javascript" src="js/jquery-1.4.3.js"></script> 

我得到三個例外:

Unhandled exception at line 10, column 2 in ms-appx://66b782f9-8814-4b8e-a2e3-d6e73893690a/js/jquery-ui-1.8.9.custom.min.js 0x800a1391 - JavaScript runtime error: 'jQuery' is undefined

(其中兩種 - 兩個警報在成功和錯誤)

Unhandled exception at line 8, column 9 in ms-appx://66b782f9-8814-4b8e-a2e3-d6e73893690a/js/default.js 0x800a1391 - JavaScript runtime error: 'alert' is undefined

任何人有任何想法我做錯了什麼?或者任何人都知道使用IIS上託管的WCF服務的任何方式?

非常感謝您提前。

+0

在jquery UI之前包含jquery,它應該修復你的jquery未定義問題。你可以嘗試讓web服務上網,看看你是否可以使用瀏覽器來使用它。 –

回答

0

這裏可能有幾個問題。您需要WCFTestClient和JavaScript使用不同的端點。首先,您需要一個SOAP端點,但第二個需要一個非SOAP(又名REST)端點。既然你沒有提到你的問題,我假設你只有一個端點,並且由於WCFTestClient的工作原理,它是一個SOAP端點,它不適用於JavaScript 。如果是這種情況,請在您的服務中添加一個新的Web端點(或者替換您的服務)。您可以在MSDN的WCF Web HTTP Programming Model文檔中閱讀有關Web端點的更多信息。


從理論上講,它可以調用SOAP端點使用JavaScript(特別是如果端點使用一些簡單的像BasicHttpBinding綁定)。但您需要創建要發送給它的有效負載,並根據SOAP規範對其進行格式化,而不是您發送和期望的JSON有效負載。

如果你這麼做 - 只有一個非SOAP端點,那麼WCF Test Client將不再支持它,but that's expected, since it tries to consume the service WSDL to talk to it

相關問題