C# Простой веб-сервер с параметрами URL

Я пытаюсь создать небольшую программу, которая будет действовать как веб-сервер и принимать параметры URL. Я нашел этот пример проекта: https://codehosting.net/blog/BlogEngine/post/Simple-C-Web-Server.aspx

Есть ли способ заставить это получать мои параметры URL? Есть ли какой-нибудь другой пример проекта, подобного этому, который имеет эту функциональность?


person Zoszko    schedule 01.02.2015    source источник


Ответы (3)


Вы должны взглянуть на OWIN/Katana. Исходя из вашего вопроса — и с возможностью размещения OWIN в любом процессе — это может вполне подойти и является текущим способом:

http://www.asp.net/aspnet/overview/owin-and-katana/getting-started-with-owin-and-katana

Вы найдете тонны образцов по этой теме. Для вашего вопроса, связанного с параметрами, вы можете обратиться к этой статьи.

Основываясь на первой ссылке, вы можете сделать что-то вроде следующего:

public class Startup1
{
    public void Configuration(IAppBuilder app)
    {
        app.Run(context =>
        {
            var value = context.Request.Query.Get("someKey");

            if (value == "foo")
            {
                // do something
            }

            context.Response.ContentType = "text/plain";
            return context.Response.WriteAsync("Hello, world.");
        });
    }
}

Запрос может выглядеть так: http://someServer:80/?someKey=foo

person khlr    schedule 01.02.2015
comment
Что ж, этот проект OWIN/Katana выглядит многообещающе. Я могу подтвердить, что то, что @Shahrooz связало в другом ответе, работает, и я уверен, что это тоже работает. Но я не ближе, чтобы получить эти параметры. Не могли бы вы быть более «конкретным»? - person Zoszko; 01.02.2015
comment
Смотрите мой обновленный ответ. Дальнейшие исследования зависят от вас ;) - person khlr; 01.02.2015

Прочтите эту статью: Создание простого файлового сервера с помощью OWIN и Katana

class Program
    {
        static void Main(string[] args)
        {
            var url = "http://localhost:8080";
            WebApp.Start(url, builder => builder.UseFileServer(enableDirectoryBrowsing:true));            
            Console.WriteLine("Listening at " + url);
            Console.ReadLine();
        }
    }
person Community    schedule 01.02.2015
comment
Не могли бы вы поподробнее рассказать, как реализовать это в моем приложении? - person Zoszko; 01.02.2015
comment
@Zoszko, вы можете перейти к этой статье: odetocode.com/blogs/scott/archive/2014/02/10/ - person ; 01.02.2015

На основе вашего примера проекта попробуйте ввести метод SendRequest следующим образом:

string name = request.QueryString.Get("name");
            switch (name){
                case "a":
                    return string.Format("<HTML><BODY>My web page a.<br>{0}</BODY></HTML>", DateTime.Now);
                    break;
                case "b":
                    return string.Format("<HTML><BODY>My web page b.<br>{0}</BODY></HTML>", DateTime.Now);
                    break;
                default:
                    return string.Format("<HTML><BODY>My web page .<br>{0}</BODY></HTML>", DateTime.Now);
                    break;
            }
person Cosmin    schedule 19.12.2018