我正在創建一個REST Web服務,該服務通過使用DataContractSerializer序列化.NET對象來返回XML文檔。通過使用這樣的代碼WCF服務器返回帶有?xml-stylesheet的XML文檔集
<?xml version="1.0" encoding="utf8" ?>
<patient xmlns="http://stackoverflow.com/example">
.....
</patient>
:它工作得很好返回的文件就像
Message MyRestMethod()
{
Patient patientObject = new Patient() {Name="Mickey Mouse"};
Message message = WebOperationContext.Current.CreateXmlResponse<Patient>(patientObject);
return message;
}
然而有時,Web服務所使用的網絡瀏覽器,所以這將是,如果它更漂亮將返回文件是這樣的:
<?xml version="1.0" encoding="utf8" ?>
<?xml-stylesheet type="text/xsl" href="/stylesheet/format.xsl" ?>
<patient xmlns="http://stackoverflow.com/example">
.....
</patient>
我已經做了一些實質性的周圍挖掘,並能幾乎通過推導我自己的消息和OV做使用OnWriteBodyContents()來訪問XmlDictionaryWriter。此時,我發現WriteProcessingInstruction(name,text)不能寫入xml-stylesheet指令。
更重要的是,接收xml樣式表處理指令的WCF客戶端代碼也會彈出,所以即使您在角色級別「劈開」流以添加它,也不需要將其發送到WCF客戶端。 。
如果任何人有更好的建議,請讓我知道...
我已經避免了自定義消息編碼器路由,因爲我的ServiceContract返回消息而不是特定的對象。這樣,客戶端代碼就可以完全訪問消息頭,這在REST接口中相當重要。 –
即使使用數據協定,您也總是可以訪問消息頭。 –