Проблемы, возникающие при создании Asp.net Веб-Api на C# с подробностями ниже:

#c# #asp.net-web-api #visual-studio-2017 #webapi

Вопрос:

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

Ошибка:

введите описание изображения здесь

Я попытался найти его, но не получил никакой полезной информации о нем, и, прежде всего, я внес изменения Web.config , но все еще не могу найти web.config его в своем приложении. Любая помощь, которая могла бы решить эту проблему, будет признательна.

Изображение обозревателя решений, в котором я не могу найти web.config файл:

введите описание изображения здесь

Employee Контроллер:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using My_Work.Models;

namespace My_Work.Controllers
{
    public class EmployeeController : ApiController
    {
        [HttpGet]
        public IEnumerable<Employee> Get(Employee employee)
        {
            Employee emp = new Employee();
            return emp.GetList(employee);
        }

    }
}
 

Employee Модель:

 using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Configuration;
using System.Data.SqlClient;

namespace My_Work.Models
{
    public class Employee
    {
        public int EmployeeID { get; set; }
        [Required]
        public string FirstName { get; set; }
        public string LastName { get; set; }
        [Required]
        public string Gender { get; set; }
        [Required]
        [Range(20, 60, ErrorMessage = "Age must be between 20 and  60")]
        [Display(Name = "Age")]
        public int Age { get; set; }

        [Required]
        [Display(Name = "Education Level")]
        public int EducationLevel { get; set; }
        [Range(25000, 500000, ErrorMessage = "Please enter correct value")]
        [Required]
        /* We can control the display of data in a View (UI) using
       display attributes */
        [Display(Name = "Salary")]
        public int Salary { get; set; }
        [Required]
        [EmailAddress]
        public string EmailAddress { get; set; }
        [Required(ErrorMessage = "Please enter hire date")]
        [Display(Name = "Hire Date")]
        [CustomHireDate(ErrorMessage = "Hire Date must be less than or equal to Today's Date")]
        [DataType(DataType.Date)]
        public DateTime? HireDate { get; set; }
        public string City { get; set; }
        public string ImageURL { get; set; }
        [Required]
        [Display(Name = "Upload Photo")]

        string ConnectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
        SqlConnection sqlConnection = null;
        SqlCommand cmd = null;
        public List<Employee> GetList(Employee employee)
        {
            List<Employee> employeesList = new List<Employee>();
            sqlConnection = new SqlConnection(ConnectionString);
            string query = string.Empty;
            query = @"select * from Employee";
            cmd = new SqlCommand(query, sqlConnection);
            sqlConnection.Open();
            SqlDataReader dataReader = cmd.ExecuteReader();
            while (dataReader.Read())
            {
                employeesList.Add(new Employee
                {

                    EmployeeID = Convert.ToInt32(dataReader["EmployeeId"].ToString()),
                    FirstName = dataReader["FirstName"].ToString(),
                    LastName = dataReader["LastName"].ToString(),
                    Gender = dataReader["Gender"].ToString(),
                    City = dataReader["City"].ToString(),
                    EmailAddress = dataReader["EmailAddress"].ToString(),
                    Age = Convert.ToInt32(dataReader["Age"].ToString()),
                    Salary = Convert.ToInt32(dataReader["Salary"].ToString()),
                    EducationLevel = Convert.ToInt32(dataReader["EducationLevel"].ToString()),
                    HireDate = DateTime.Parse(dataReader["HireDate"].ToString()),
                    ImageURL = dataReader["ImageURL"].ToString(),
                });
                ;
            }
            sqlConnection.Close();
            return employeesList;
        }
        

    }
}
 

Комментарии:

1. Привет, я думаю, что ваш URL неверен. обычно вы не указываете на файл исходного кода. ваш контроллер может ответить в разделе localhost:<порт>/Сотрудник. пожалуйста, поделитесь также защитой контроллера и тем, как вы ее предоставляете в global.asax

2. @CarloCapuano Я обновил вопрос, как вы упомянули.

Ответ №1:

вы должны запустить свой веб-API с этого адреса http://localhost:18084/Employee

Комментарии:

1. Да, этот метод работает, но почему я не могу вызвать свой контроллер, как в веб-приложении MVC, всякий раз, когда я пытался запустить его. Таким образом, я должен всегда менять свой URL-адрес каждый раз, когда я запускаю свое приложение, по умолчанию мое приложение не запущено.

2. Вы не должны использовать имя «Контроллеры» в URL-адресе и суффикс .cs ( веб-приложение MVC работает не так ), эта ссылка может помочь вам проверить это