2
我有一個非常簡單的啓用Ajax的WCF服務,它應該返回一個類型爲EntityObject的EntityObject序列化爲JSON的實體。支持Ajax的WCF服務不響應數據
這裏是我的.svc文件:
[ServiceContract(Namespace = "FASServices")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class FASService
{
[OperationContract, WebGet(ResponseFormat=WebMessageFormat.Json)]
public FrameAttributes GetFrameAttributes(long frameID)
{
var data = FrameAttributeAccessor.GetFrameAttributes(frameID);
WebOperationContext.Current.OutgoingResponse.Format = WebMessageFormat.Json;
return data;
}
}
我曾在一個ASP.Net頁面通過服務引用上的ScriptManager消耗此服務,並有機會獲得結果,生成一個服務代理。
這裏是我的web.config:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="FASAdmin.FASServiceAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service name="FASAdmin.FASService">
<endpoint address="" behaviorConfiguration="FASAdmin.FASServiceAspNetAjaxBehavior"
binding="webHttpBinding" contract="FASAdmin.FASService" />
</service>
</services>
</system.serviceModel>
當調用服務,我可以看到XHR離開我的瀏覽器(通過螢火蟲),並且還可以看到ASP.Net開發服務器接收HTTP請求和隨後調用通過我的數據訪問層使用傳遞的業務密鑰執行簡單查找的服務(我在上面的return語句中有一個斷點,並且可以檢查返回的實體)。
但是,一旦控制權離開我的服務代碼並返回,響應永遠不會發送到我的瀏覽器,隨後JSON序列化數據永遠不會被接收,甚至沒有任何響應頭可以檢查。
有誰知道爲什麼這可能是這種情況? 任何人都可以提供任何技術來調試WCF堆棧跟蹤消息端到端?
在此先感謝。
在這個答案中的WCF跟蹤鏈接幫助我跟蹤並找到序列化錯誤。乾杯。 – James 2010-09-23 14:22:03