Loading...
Alexander.alexiev avatar Alexander.alexiev 0 Точки

Program does not contain a static 'Main' method suitable for an entry point

Здравейте, колеги,

Малко връщам назад лентата, но сега гледам WEB-а от Май месец и се опитвам да направя първото упражнение (HTTP Server). Следвам лектора и мисля, че съм написал всички класове по документа, но когато се опитам да стартирам Demo.App програмата и получавам долните грешки. Доколкото следвах лекцията, не съм забелязал лектора да е създавал Main метод във проекта SIS.HTTP. Ако някой си спомня това упражнение от преди 5 месеца или е срещал грешките долу, моля за малко съдействие. :) 

Severity Code Description Project File Line Suppression State
Error CS5001 Program does not contain a static 'Main' method suitable for an entry point SIS.HTTP D:\C# WEB\SIS-Manual\SIS\SIS\CSC 1 Active
Severity Code Description Project File Line Suppression State
Error CS0006 Metadata file 'D:\C# WEB\SIS-Manual\SIS\SIS\bin\Debug\netcoreapp2.1\SIS.HTTP.dll' could not be found Demo.App D:\C# WEB\SIS-Manual\SIS\DemoApp\CSC 1 Active
 

Благодаря предварително! 

Ако някой знае как да пействам скрийншотс тук може също да сподели. :) 

Александър

Тагове:
0
Module: C# Web 05/11/2019 00:10:29
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

Е по спомен sis  беше библиотека,  няма как да извикаш нея да стартираш в другия апп си я викаш вдигаш и тогава..

Без main method нищо няма да ти тръгне... Дай код да разгледаме но сякаш стартираш грешния проект или поне се опитваш :Д

0
Alexander.alexiev avatar Alexander.alexiev 0 Точки

Здравей и мерси за отговора! 

Това ми е Demo.App project-a

using System;
using SIS.HTTP.Requests;

namespace Demo.App
{
    class Program
    {
        static void Main(string[] args)
        {
            string request = "POST /url/asd?name=john&id=1#fragment HTTP/1.1\r\n"
                +"Authorization: Basic 2394712781273\r\n"
                + "Date: " + DateTime.Now + "\r\n"
                +"Host: localhost:5000\r\n"
                + "\r\n"
                + "username=johndoe&password=123";

            HttpRequest httpRequest = new HttpRequest(request);

            var a = 5;
        }
    }
}

Както виждаш в него се опитвам да инициализирам инстанция на класа HttpRequest. А това е самият клас (ако помага): 

 

using System;
using System.Collections.Generic;
using System.Linq;
using SIS.HTTP.Common;
using SIS.HTTP.Enums;
using SIS.HTTP.Exceptions;
using SIS.HTTP.Headers;
using SIS.HTTP.Headers.Contracts;
using SIS.HTTP.Requests.Contracts;

namespace SIS.HTTP.Requests
{
    public class HttpRequest : IHTTPRequest
    {
        public HttpRequest(string requestString)
        {
            CoreValidator.ThrowIfNullOrEmpty(requestString, nameof(requestString));

            this.FormData = new Dictionary<string, object>();
            this.QueryData = new Dictionary<string, object>();
            this.Headers = new HttpHeaderCollection();

            this.ParseRequest(requestString);
        }
        public string Path { get; private set; }

        public string Url { get; private set; }

        public Dictionary<string, object> FormData { get; }

        public Dictionary<string, object> QueryData { get; }

        public IHttpHeaderCollection Headers { get; }

        public HttpRequestMethod RequestMethod { get; private set; }

        private bool IsValidRequestLine(string[] requestLineParams)
        {
            if (requestLineParams.Length != 3 || requestLineParams[2] != GlobalConstants.HttpOneProtocolFragment)
            {
                return false;
            }

            return true;
        }

        private bool IsValidRequestQueryString(string queryString, string[] queryParameters)
        {
            throw new NotImplementedException();
        }

        private IEnumerable<string> ParsePlainRequestHeaders(string[] requestLines)
        {
            for (int i = 1; i < requestLines.Length - 1; i++)
            {
                if (!string.IsNullOrEmpty(requestLines[i]))
                {
                    yield return requestLines[i];
                }
            }
        }

        private void ParseRequestMethod(string [] requestLineParams)
        {
           
            bool parseResult = HttpRequestMethod.TryParse(requestLineParams[0], true,
                out HttpRequestMethod method);

            if (!parseResult)
            {
                throw new BadRequestException(string.
                    Format(GlobalConstants.UnsupportedHttpMethodExceptionMessage, requestLineParams[0]));
            }
            this.RequestMethod = method;
        }

        private void ParseRequestUrl(string[] requestLineParams)
        {
            this.Url = requestLineParams[1];
        }

        private void ParseRequestPath()
        {
            this.Path = this.Url.Split("?")[0];

        }

        private void ParseRequestHeaders(string[] plainHeaders)
        {
            plainHeaders.
                Select(plainHeader => plainHeader.Split(new[] { ':', ' ' },
                StringSplitOptions.RemoveEmptyEntries))
                .ToList()
                .ForEach(headerKvp =>this.Headers.AddHeader(new HttpHeaders(headerKvp[0], headerKvp[1])));
        }

        private void ParseRequestQueryParameters()
        {
            //name="pesho"&id="gosho"
            this.Url.Split('?', '#')[1]
                .Split('&')
                .Select(plainQueryParameter => plainQueryParameter.Split('='))
                .ToList()
                .ForEach(parsedQueryParameterKVP => 
                this.QueryData.Add(parsedQueryParameterKVP[0], parsedQueryParameterKVP[1]));
        }

        private void ParseRequestFormDataParameters(string requestBody)
        {
            //TODO: Parse Multiple Parameters By Name
            requestBody
                .Split('&')
                .Select(plainQueryParameter => plainQueryParameter.Split('='))
                .ToList()
                .ForEach(parsedQueryParameterKVP =>
                this.FormData.Add(parsedQueryParameterKVP[0], parsedQueryParameterKVP[1]));
        }
        private void ParseRequestParameters(string requestBody)
        {
            this.ParseRequestQueryParameters();
            this.ParseRequestFormDataParameters(requestBody);
        }
        private void ParseRequest(string requestString)
        {
            string[] splitRequestString = requestString
                .Split(new[] { GlobalConstants.HttpNewLine }, System.StringSplitOptions.None);

            string[] requestLineParams = splitRequestString[0]
                .Split(new[] {' '}, System.StringSplitOptions.RemoveEmptyEntries);

            if (!this.IsValidRequestLine(requestLineParams))
            {
                throw new BadRequestException();
            }

            this.ParseRequestMethod(requestLineParams);
            this.ParseRequestUrl(requestLineParams);
            this.ParseRequestPath();

            this.ParseRequestHeaders(this.ParsePlainRequestHeaders(splitRequestString).ToArray());

            //this.ParseCookies();

            this.ParseRequestParameters(splitRequestString[splitRequestString.Length -1]);

        }
    }
}

Няма да пействам другите класове в проекта SIS.HTTP, но наистина никъде в проекта SIS.HTTP нямам Main метод. Попринцип следвах лекцията и никъде не видях във SIS.HTTP проекта да създаваме мейн. Имаш ли спомен дали е трябвало да бъде създаден такъв? 

Отново благодаря!

Поздрави, 

Александър

 

0
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

е той е библиотека няма защо да има там.. Трябва да разровя стария код. Но  тоя код дето го плясна никаква полза от него. Научи се ад ползваш гитхъб пастбин.

 

0
Alexander.alexiev avatar Alexander.alexiev 0 Точки

Напълно си прав! Разцъквам Гитхъба и ще пробвам скоро да пратя линк към проекта! 

Мерси отново!

0
ToddStanley avatar ToddStanley 0 Точки

hi

 

 

-1
18/11/2019 12:30:59
ToddStanley avatar ToddStanley 0 Точки

These statistics say about the hard work of the students of Pines. They have really worked to get those winning percentage which made them top from other teams. As per   uk-dissertation.com   reviews It is only possible by dedication towards their work and concentration on the work they are working out. Both boys and girls has done well and achieved this winning percentage to their team.

-1
18/11/2019 11:57:08
ThomasMore avatar ThomasMore -19 Точки

Write My Essay Online might be the center undertaking, yet perusing is similarly significant. Before you begin composing your paper, you should direct an expansive quest for pertinent writing. Figuring out how to filter through a lot of information is a significant scholarly aptitude. You should begin via looking through databases – Google Scholar is an incredible apparatus for this – utilizing catchphrases identified with your examination theme. When you discover an article that sounds promising, read through the theoretical to guarantee that it's pertinent. 

-1
softlogicpro1 avatar softlogicpro1 -1 Точки

I enjoy what you guys are usually up too. This sort of clever work and coverage! Keep up the wonderful works guys I’ve added you guys to my blog roll.

Python Training in Chennai 

-1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.