2013-09-24 83 views
24

我在Visual Studio 2010中用C#創建了一個非常基本的WCF服務。我想知道是否可以通過鍵入如下方式直接從瀏覽器運行我的方法://localhost:49815/Service1.svc/methodName(parameterValue)從瀏覽器運行WCF方法

這是我的代碼的本質。

接口:

using ... 
namespace WcfService1{ 
    [ServiceContract] 
    public interface IService1{ 
     [OperationContract] 
     [WebGet] 
     string echoWithGet(string s); 
     [OperationContract] 
     [WebInvoke] 
     string echoWithPost(string s); 
    } 
} 

方法:

public string echoWithGet(string s){ 
      return "Get: "+s; 
     } 

public string echoWithPost(string s){ 
      return "Post: " + s; 
     } 
+2

只是好奇......你嘗試過嗎? –

+0

另請參閱:http://msdn.microsoft.com/en-us/library/bb412178.aspx –

+0

是的,如果通過「嘗試它」,您引用通過我建議的格式調用該方法。 – javaNinja

回答

40

是的,您可以在瀏覽器中調用這些方法,如果您的服務配置正確,但是您的URL語法錯誤。

要調用從瀏覽器WCF方法,你需要做兩件事情:你的方法,你都做

一旦做到這一點,WCF會開始監聽URL請求,並傳輸給你相應的Web方法。如果您希望使網址「更清晰」,但這是可選的,那麼您可以在您的WebGetWebPost屬性中設置URL模板,以將URL片段映射到方法參數。否則,你傳遞參數傳遞參數給任何其他URL以同樣的方式,使用參數分隔符:

http://localhost:49815/MyService.svc/methodName?parameterName=value 

注意,對於網絡調用的方法,則默認爲POST。技術上你可以通過瀏覽器做到這一點,但它更難(你必須製作一個本地的HTML表單,或使用您的Javascript控制檯,或類似的東西),但WebGet方法可以通過請求正確的URL 。另外,如果你的方法返回比字符串更復雜的任何東西,WCF會嘗試將它序列化爲JSON;您可能需要在結果頁面上查看源代碼才能看到它。

+0

這個答案可能是誤導性的,因爲它聽起來像你可以只使用'webHttpBinding'從瀏覽器訪問WCF方法。是這樣嗎?那麼''指令呢? –

+0

你還需要一件事...... uri – GomuGomuNoRocket

4

這不回答你的問題,但它將使您的生活更容易使您的服務RESTful(或REST) -喜歡)。雖然你可以使用WCF來做到這一點,但我強烈建議看看ASP.NET Web API

還有其他可用於創建RESTful服務的替代方法,例如NancyServiceStack

1

直接的答案。 對於GET方法,您可以使用瀏覽器查看結果。 對於POST方法,如果您直接粘貼您的URL以使用Post方法,則無法使用Browser。 爲了實現POST,您可以創建HTML FORM或使用FIDDLER查看結果。