2016-07-22 3 views
1

からXML名前空間を削除し、私はXMLの結果を返すとき、私は、次を得る:は、Web APIと.NETのコアを使用して、アクションの結果

<Test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Response> 
     <Status>0</Status> 
    </Response> 
</Test> 

どのように名前空間を削除しますか?

は、ここに私のstartup.csの一部が

services 
      .AddMvc(config => 
      { 
       // Add XML Content Negotiation 
       config.RespectBrowserAcceptHeader = true; 
       config.InputFormatters.Add(new XmlSerializerInputFormatter()); 
       config.OutputFormatters.Add(new XmlSerializerOutputFormatter(new XmlWriterSettings 
       { 
        OmitXmlDeclaration = true, 

       })); 
      }) 
      .AddXmlDataContractSerializerFormatters() 
      .AddXmlSerializerFormatters() 
      .AddMvcOptions(opt => opt.FormatterMappings.SetMediaTypeMappingForFormat("xml", new MediaTypeHeaderValue("application/xml"))); 
+0

RTMで試しましたか?しばらくRTMが外れているときにRC1/RC2を使用しても、良い計画のようには聞こえません。より良い移行、多分それはRTMで修正されました – Tseng

+0

私はRTMを使用していると言わざるを得ないでしょう。 – Mike

+0

私の間違い。 RTMから削除されたものと混同しました。以前のOutputFormattersを削除しましたか?それを追加する前に '.OutputFormatters.Clear()'を呼び出すことによって? '.AddXmlSerializerFormatters()'はすでにフォーマッタを追加しているので、あなたのオプションはおそらく有効にならないと思われます。 – Tseng

答えて

0

両方XmlSerializerDataContractSerializerフォーマッタがapplication/xmltext/xmlためContent-TypeまたはAcceptヘッダの値を探し、ファイルの。したがって、両方の最初のフォーマッタを登録すると、それらのフォーマッタが1つだけ有効になる可能性があります。

XmlSerializerをサポートする場合は、そのフォーマッタのみを登録し、何らかの理由で両方をサポートする場合は、探しているコンテンツタイプを変更してください。例:アプリケーション/ XML-DCS、text/xmlで-DCS、アプリケーション/ XML-xmlser、テキスト/ xmlser

上記の問題の場合は、DataContractSerializerOutputFormatterはおそらく応答を書いているので、あなたはそれが取る表示されません効果。

関連する問題