C # - Инкремент через список веб-сервисов в каталоге и список доступных веб-методов - PullRequest
0 голосов
/ 15 сентября 2009

У меня есть несколько различных веб-сервисов в создаваемом веб-приложении C #, и я хотел бы создать страницу быстрой документации, в которой перечислены все веб-сервисы и доступные веб-методы в каждом. Вместо того, чтобы постоянно обновлять страницу документации всякий раз, когда я меняю / добавляю веб-метод, было бы хорошо, если бы документация была динамичной.

Для каждого веб-метода я хотел бы получить атрибут Description из замедления веб-метода и (если возможно) список параметров для каждого метода.

Я знаю, что могу получить много этой информации со сводной страницы веб-службы, которая .NET служит для страницы .asmx, но я не хочу заставлять пользователя продолжать нажимать на кнопку с главной страницей документации.

Спасибо заранее.

1 Ответ

3 голосов
/ 15 сентября 2009

Быстрое решение - написать собственный обработчик Http:

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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...