ASPI Core Web API работает на IIS Express, но не работает в IIS на Windows - PullRequest
0 голосов
/ 20 сентября 2019

Я новичок в ядре asp.net.я использую ядро ​​asp.net 2.1.у меня два контроллера.Контроллер значений по умолчанию, который не имеет подключения к базе данных, и customerController, который имеет подключение к базе данных sqlserver.когда я запускаю свой проект на iis express, все хорошо, но когда я публикую свой проект и использую windows, iis value api работает хорошо, но мой пользовательский api, у которого есть соединение с sqlserver, не работает.

appsettings calss:

{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "DefaultConnection": "Data Source=AHAD;Initial Catalog=mydb;Integrated Security=True"
  }
}

Класс запуска:

namespace SalesApp
{
    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
            services.AddDbContext<MyDbContext>(Options =>
            {
                Options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"));
            });
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
            //,
    //ILoggerFactory loggerFactory,
    //MyDbContext db)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseHsts();
            }

            app.UseHttpsRedirection();
            app.UseMvc();
            //loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            //loggerFactory.AddDebug();

            //db.Database.Migrate();

            //app.UseMvc();
        }
    }
}

Класс MyDbContext:

public class MyDbContext : DbContext
    {

        public MyDbContext()
        {

        }

        public MyDbContext(DbContextOptions<MyDbContext> options)
            : base(options)
        {

        }

        //public DbSet<CUSTOMER> customers { get; set; }

        public DbSet<CUSTOMER> Customer { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<CUSTOMER>(entity =>
            {
                entity.Property(e => e.C_Code).HasMaxLength(5);
                entity.Property(e => e.C_Name).HasMaxLength(60);
                entity.Property(e => e.C_Code_C).HasMaxLength(12);
            });
        }

    }

Класс CustomerController:

[Route("api/[controller]")]
    [ApiController]
    public class CustomerController : ControllerBase
    {
        MyDbContext _context;

        public CustomerController(MyDbContext context)
        {
            _context = context;
        }

        [HttpGet]
        public IActionResult GetCustomers()
        {
            return new ObjectResult(_context.Customer);
        }

    }

значения api: enterописание изображения здесь

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

меня смутило 2 недели.

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Вам потребуется настроить IIS для правильной работы.

enter image description here

Вы также должны убедиться, что используете .NET Core Windows Server Hosting Bundle

Затем:

Перезапустите систему или выполните net stop is / y, а затем запустите net start w3svc из командной оболочки,При перезапуске IIS происходит изменение системной переменной PATH, которая является переменной среды, сделанной установщиком.

После этого откройте командную строку с правами администратора и введите:

C: \ Windows \ System32> iisreset

Затем опубликуйте приложение в папке и откройте там командную строку.Запустите приложение, набрав

C: \ Temp \ publish> dotnet YourApplicationName.dll

Теперь вы можете перейти в браузер и ввести http://localhost:port/, и оно будетотобразить ваше приложение .Net Core.

0 голосов
/ 20 сентября 2019

Проблема не в вашем коде, а в настройках IIS.Проверьте настройки IIS и поддерживают ли они .Net Core.Вот документация Microsoft по настройке: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...