2014-02-13 52 views
0

FILE WebService.svc.vb使用HTML/JavaScript的

Public Class WebService 
    Implements IWebService 
    Public Function HelloThere(ByVal name As String) As String Implements IWebService.HelloThere 
     Return "Hello there " & name 
    End Function 
End Class 

FILE IWebService.vb

Imports System 
Imports System.ServiceModel 

<ServiceContract()> 
Public Interface IWebService 

    <OperationContract()> 
    Function InsertReport(ByVal name As String) As String 
End Interface 

文件Web.config中

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"/> 
    </system.web> 
    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <!-- To avoid disclosing metadata information, set the value below to false before deployment --> 
      <serviceMetadata httpGetEnabled="true"/> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service name="WebService"> 
     <endpoint address="WebService" binding="basicHttpBinding" contract="IWebService" /> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 

     </service> 
    </services> 

    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
    </system.serviceModel> 
    <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    <!-- 
     To browse web app root directory during debugging, set the value below to true. 
     Set to false before deployment to avoid disclosing web app folder information. 
     --> 
    <directoryBrowse enabled="true"/> 
    </system.webServer> 

</configuration> 

FILE WebService.svc

使用WCF服務
<%@ ServiceHost Language="VB" Debug="true" Service="WebService.WebService" CodeBehind="WebService.svc.vb" %> 

我的問題是:這項服務遠程託管在IIS 7(.5我認爲),我想在Web應用程序中使用它。這個網絡應用程序使用jQuery,只是一個標準的HTML5文檔。我已經看到很多例子,人們用一些javascript或AJAX等來調用WCF服務...我正在尋找一些代碼,以及額外所需的web.config(和/或對我的服務進行的一般更改)修改以允許這種類型的消費。

回答

1

如果你的服務工作正常,那麼你不需要改變服務器端。您的網絡服務功能獨立於呼叫客戶端。你可以使用一些工具如SoapUI來測試你的服務。

下一個HTML代碼段應該可以很好地作爲您的服務的客戶端,讓您的郵件URL適應您的需求。正如你所看到的,它張貼json數據,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
     $("a#CallService").click(function (e) { 
      e.preventDefault(); 

      $.ajax({ 
      type: 'POST', 
      data: '{"name": "' + $("input#name").val() + '"}', 
      url: 'http://targetURL/Hello', 
      contentType: 'application/json; charset=utf-8', 
      dataType: 'json', 
      success: 
       function (data, textStatus, XMLHttpRequest) { 
       alert(data.d); 
       }, 
      error: 
       function (XMLHttpRequest, textStatus, errorThrown) { 
       alert(textStatus); 
       } 
      }); 
     }); 
     });  
    </script> 
</head> 
<body> 
    <input id="button" /><a id="CallService" href="#">Test</a> 
</body> 
</html> 

希望我幫了忙!

+0

好吧,當我在SoapUI中發送請求時,服務似乎工作得很好。但是,我無法讓你的代碼正常工作。我已經替換了URL,我已經將contentType更改爲在成功請求後在SoapUI中看到的內容。我也已將dataType更改爲xml,這正是我想要的。 SoapUI能告訴我更多關於我需要做什麼來形成正確的請求嗎? (我也已經使用jQuery 1.10.1以及jQuery Mobile 1.4.0如果它很重要) – JzInqXc9Dg

+0

什麼是錯誤? –

+0

我已經得到許多不同的... 400壞請求似乎是我的搖滾在這一刻。我已經嘗試過添加SOAPAction ..但是仍然沒有骰子。這裏記錄的是(fake;))我一直在使用的URL:http://somehost/service/WebService.svc - 對嗎?我也試過在最後加上「?wsdl」的網址。我也嘗試了附加的「/ MethodName」。 – JzInqXc9Dg