【发布时间】:2011-09-10 12:06:16
【问题描述】:
我正在为一些数据编写一系列 Web 界面。我有 WebMethods 以 DataSet 和 XmlDataDocument 格式返回数据(XmlDataDocument 消除了所有架构开销。)
[WebMethod]
public XmlDataDocument Search_XML( string query ) {
return new XmlDataDocument( Search_DataSet( query ) );
}
[WebMethod]
public DataSet Search_DataSet( string query ) {
DataSet result = new DataSet( "SearchResults" );
//... Populate DataSet here
return result;
}
我还创建了一个函数,它接受一个 XSL 格式化字符串并返回格式化的结果,允许客户端格式化一个 HTML 响应,他们可以直接注入到他们的网页中:
public string Search_XSL( string query, string xsl ) {
string result = "";
XmlDataDocument resultxml = Search_XML( query );
XslCompiledTransform transform = new XslCompiledTransform();
using ( StringReader xslstringreader = new StringReader( xsl ) ) {
using ( XmlReader xslxmlreader = XmlReader.Create( xslstringreader ) ) {
using ( MemoryStream transformedmemorystream = new MemoryStream() ) {
using ( StreamWriter transformedstreamwriter = new StreamWriter( transformedmemorystream ) ) {
try {
transform.Load( xslxmlreader );
transform.Transform( resultxml, null, transformedstreamwriter );
transformedstreamwriter.Flush();
transformedmemorystream.Position = 0;
using ( StreamReader transformedreader = new StreamReader( transformedmemorystream ) ) {
result = transformedreader.ReadToEnd();
}
}
catch ( Exception ex ) {
result = ex.InnerException.ToString();
}
}
}
}
}
return result;
}
我的问题是,我如何为这个 Search_XSL() 函数实现一个类似 WebMethod 的接口,以便我可以像函数一样返回结果字符串,而不需要 WebMethod 对其进行 XML 编码?那会是一个新的 Web 表单吗?如何实现没有实际 HTML 的 Web 表单,只接受表单参数?不知道从哪里开始。
编辑:看起来“通用处理程序”.ashx 文件是要走的路。这是正确的方法吗?
【问题讨论】:
标签: c# .net web-services