在ASP.NET中使用REST YAML Web服务

时间:2009-10-26 01:08:48

标签: asp.net rest asmx yaml

我正在使用PandaStream,它将一个REST通知作为YAML发送到我们的ASP.NET应用程序。我已经窒息并返回500的Web服务,因为它试图将内容解析为XML。我怎么能停止这个解析?我如何将内容作为一个大字符串,以便我自己解析它?

[WebMethod]
//HOWTO? suppress XML parsing
public void UpdateStatus()
{
    // HOWTO? get content as string
    // parse string as YAML
    // ...
}

更新:好的,如果我使用常规.aspx页面,如何将原始POST内容作为字符串获取?

更新2:我可以得到文字:

Stream s = Request.InputStream;
byte[] buffer = new byte[s.Length];
s.Read(buffer, 0, (int)s.Length);
String content = bytesToString(buffer);

......但它搞砸了。 yaml的开头是:

--- 
:video: 
  :thumbnail: bac01bf0-503a-012b-1406-123138002145.flv_thumb.jpg
  :duration: 15900

......依此类推,但在我的字符串中,这就变成了:

video=---%20%0a%3avideo%3a%20%0a%20%20%3athumbnail%3a%20bac01bf0-503a-012b-1406-123138002145.flv_thumb.jpg%0a%20%20%3aduration%3a%2015900

当我想要原始内容时,似乎ASP正在“参数化”POST主体。这与mime类型有关吗?

1 个答案:

答案 0 :(得分:1)

ASMX Web服务只能在输入时处理SOAP。如果您需要阅读其他格式,则需要不使用ASMX Web服务。

只需使用普通页面或HttpHandler,然后进行自己的解析。