我正在构建的C#Web应用程序中有许多不同的Web服务,并且希望创建一个快速文档页面,其中列出了每个Web服务和可用的Web方法。每当我更改/添加web方法时,不必让文档页面保持最新,如果文档是动态的,那将是件好事。
对于每个web方法,我想从Web方法减速和(如果可能的话)每个方法的参数列表中获取Description属性。
我知道我可以从.NET服务于.asmx页面的Web服务摘要页面获得大量此信息,但我不想强迫用户不得不继续点击主文档页面。
提前致谢。
答案 0 :(得分:3)
快速解决方案是编写自定义Http Handler:
public class InformationHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
// Select the assembly that contains the web service classes
var assemblyThatContainsTheWebService = Assembly.GetExecutingAssembly();
// Select all types in this assembly deriving from WebService
var webServiceTypes =
from type in assemblyThatContainsTheWebService.GetTypes()
where type.BaseType == typeof(WebService)
select type;
context.Response.ContentType = "text/plain";
foreach (var type in webServiceTypes)
{
context.Response.Write(string.Format("Methods for web service {0}:{1}", type, Environment.NewLine));
// Select all methods marked with the WebMethodAttribute
var methods =
from method in type.GetMethods()
where method.GetCustomAttributes(typeof(WebMethodAttribute), false).Count() > 0
select method;
foreach (var method in methods)
{
context.Response.Write(method);
}
context.Response.Write(Environment.NewLine);
}
}
public bool IsReusable
{
get
{
return false;
}
}
}