2012-03-15 103 views
1

我有一個.NET 4 WCF服務(MEX和HttpGET)。自定義WCF MessageFormatter

對於HttpGET端點,我想重寫默認的MessageFormatter.DeserializeRequest以將UriTemplate映射到強類型對象。

理想情況下,將使用自定義屬性來修飾應該使用此格式化程序的方法,但我不確定是否可以在這方面切換格式化程序。

這是可行的,有人可以通過app.config中所需的配置來引導我嗎?

回答

0

如果你想爲WCF REST細粒度控制的格式,我建議以下兩種方法之一:

  1. 覆蓋WebHttpBehavior指定自己的消息格式。這給你很多控制權,但需要很多操作。 http://msdn.microsoft.com/en-us/library/system.servicemodel.description.webhttpbehavior.getrequestclientformatter.aspx

  2. 使用新的WCF Web API,它爲REST服務提供了更多的可配置性。 http://wcf.codeplex.com/wikipage?title=WCF%20HTTP

但是,如果你想要做的就是地圖的某些查詢字符串參數來強類型的對象,你可以實現自己的QueryStringConverter類:

http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.querystringconverter.aspx

和使用,在您的自定義WebHttpBehavior: http://msdn.microsoft.com/en-us/library/system.servicemodel.description.webhttpbehavior.getrequestclientformatter.aspx)。

+0

感謝您的聯繫。 1.如何連接配置以指定WCF使用我的自定義WebHttpBehavior? 2.該服務也需要與傳統的mex端點一起使用。我的理解是,WebAPI僅適用於Http。 – Alfred 2012-03-15 16:36:17

+0

一般而言WebHttp/REST並不意味着與mex端點/ WSDL一起使用。沒有基於WebHttp的WCF客戶端。你打算如何消費這樣一個mex端點? – Jeff 2012-03-15 16:40:26

+0

另外,有沒有什麼方法可以確定被調用的服務方法,以確定應用哪個格式化程序? – Alfred 2012-03-15 16:43:42