【问题标题】:Simple XML-RPC Web Service简单的 XML-RPC Web 服务
【发布时间】:2016-05-19 22:03:27
【问题描述】:
【问题讨论】:
标签:
.net
xml
web-services
wcf
xml-rpc
【解决方案1】:
我认为更好的选择是按照推荐的(今天)方式使用 WCF 来创建 Web 服务。使用 WCF 基础结构创建服务允许您在 IIS、WAS(win 服务)、控制台应用程序中托管您的服务,而不会出现太多问题和摩擦。 This 项目(提供 XmlRpcEndpointBehavior)和 tutorial 可以提供帮助(已经讨论过 here)。
您甚至可以轻松解析请求正文 xml 并提供所需的响应 xml 结构 - 通过使用 WCF 支持类/对象:
例如:
[OperationContract]
[WebInvoke(
BodyStyle = WebMessageBodyStyle.Bare,
Method = "POST",
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Xml,
UriTemplate = "/somemethod?param1={param1}¶m2={param2}")]
System.ServiceModel.Channels.Message SomeMethod(Stream stream, string param1, string param2)
{
string xmlString;
var inputStream = stream;
using (var streamReader = new StreamReader(inputStream))
{
xmlString = streamReader.ReadToEnd();
}
var sourceXml = new XmlDocument();
sourceXml.LoadXml(xmlString);
//...
var xml = new XDocument(...);
//...
var settings = new XmlWriterSettings();
settings.Indent = true;
var sb = new StringBuilder();
using (var writer = XmlWriter.Create(sb, settings))
{
xml.WriteTo(writer);
writer.Flush();
}
WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";
return WebOperationContext.Current.CreateTextResponse(sb.ToString());
}
顺便说一下 asmx,svc - 它仅用于在 Web 应用程序 (IIS) 中托管您的服务,asmx - 已过时,ashx - http 处理程序(严格来说不是 WS 标准 Web 服务),而不是来自 WCF 的世界 - 如果你走 ashx 的方式,你可能需要XML-RPC.NET is a library。