2012-06-20 158 views
1

我已經創建了簡單的Web服務。 代碼:簡單的WCF Web服務的Web.config

[ServiceContract] 
public interface ITsdxService 
{ 
    [OperationContract] 
    void DoWork(); 

    [OperationContract] 
    string Test(); 
} 

public class TsdxService : ITsdxService 
{ 
    public void DoWork() 
    { 
    } 

    public string Test() 
    { 
     return "Hello World!"; 
    } 
} 

Web.config文件:

<system.serviceModel> 
<services> 
    <service name="Test.TSDX.UI.TsdxService"> 
    <endpoint 
     address="Tsdx" 
     binding="wsHttpBinding" 
     bindingConfiguration="TestBinding" 
     contract="Test.TSDX.UI.ITsdxService" /> 
    </service> 
</services> 
<bindings> 
    <wsHttpBinding> 
    <binding name="TestBinding" /> 
    </wsHttpBinding> 
</bindings> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 
</system.serviceModel> 

當我從Visual Studio運行我把本地主機:50517/TsdxService.svc WSDL一切工作正常 - 我可以看到WSDL,但是當我put localhost:50517/TsdxService.svc/Tsdx/Test或localhost:50517/TsdxService.svc/Tsdx/DoWork我什麼也沒看到。提琴手告訴我,我得到了400錯誤。斷點(在Test和DoWork方法上)不起作用。爲什麼?我做了什麼不正確?

+0

試着改變你的結合basicHTTP。 – Iain

+0

@lain已經改變 - 都一樣。 400錯誤代碼。 –

+0

你可以仔細檢查你有WCF功能在Win7中打開,轉到添加/刪除程序,添加功能,單擊Microsoft.net框架下3.5.1 – Iain

回答

2

WebGet屬性添加到您的服務操作中。

[WebGet] 
public string Test() 
{ 
    ... 
} 

爲此,您還需要將WebScriptEnablingBehavior添加到服務配置中。此外,請使用webHttpBinding。所有這些都是爲了使服務能夠作爲AJAX服務工作。

定義:

<endpointBehaviors> 
    <behavior name="EndpointBehavior"> 
     <enableWebScript /> 
    </behavior> 
</endpointBehaviors> 

參考:

<endpoint behaviorConfiguration="EndpointBehavior" 
    binding="webHttpBinding" 
    ... 
/> 
+0

謝謝,它幫助我:) –