OK、MediaTypeFormatterがあります:
public class iOSDeviceXmlFormatter : BufferedMediaTypeFormatter
{
public iOSDeviceXmlFormatter() {
SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/xml"));
SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/xml"));
}
public override bool CanReadType(Type type) {
if (type == typeof(iOSDevice)) {
return true;
}
return false;
}
public override object ReadFromStream(Type type, Stream readStream, HttpContent content, IFormatterLogger formatterLogger) {
iOSDevice device = null;
using (XmlReader reader = XmlReader.Create(readStream)) {
if (reader.ReadToFollowing("iOSDevice")) {
if (!reader.IsEmptyElement) {
device = new iOSDevice();
... do processing here ...
}
}
}
readStream.Close();
return device;
}
PUTを処理するために次のアクションがあります。
public void Put(string id, iOSDevice model)
{
}
私もこれを試しました:
public void Put(string id, [FromBody]iOSDevice model)
{
}
そして私はこれを試しました:
public void Put(string id, [FromBody]string value)
{
}
私がこれを行うとき、これらのどれも機能しません:
string data = "<iOSDevice>xml_goes_here</iOSDevice>";
WebClient client = new WebClient();
client.UploadString(url, "PUT", data);
アクションはiOSDeviceXmlFormatterのトリガーを拒否し、[FromBody]文字列としても読み取れません。このことをどのようにマッピングしますか?
ありがとう、
アリソン