c# Консольное приложение с API не работает на сервере - PullRequest
0 голосов
/ 24 апреля 2020

В Visual Studio я создал консольное приложение с API (8 apiControllers). На моей локальной машине все работает нормально. На машине моего коллеги тоже нет проблем. При копировании exe-файла в WindowsServer2012R2 возникает проблема. API слушает порт 44311. Exe работает. Когда я смотрю с помощью netstat, я вижу, что порт 44311 слушает. Но при попытке получить какой-либо ответ в браузере ничего не появляется (в браузере я должен ввести url https://localhost: 44311 / BitVise / Test ). В API есть сваггер, но в браузере он также ничего не возвращает, кроме ошибки «этот сайт недоступен».

Некоторый код: Program.cs:

using System;
using System.Configuration;

namespace BitViseApi
{
    class Program
    {
        static void Main(string[] args)
        {
            string domainAddress = ConfigurationManager.AppSettings["domainAddress"];
            using (WebApp.Start(url: domainAddress))
            {
                Console.WriteLine("Service Hosted " + domainAddress);
                System.Threading.Thread.Sleep(-1);
            }

        }
    }
}

Запуск .cs: ​​

using Owin;
using System.Web.Http;

namespace BitViseApi
{
    class Startup
    {
        public void Configuration(IAppBuilder appBuilder)
        {
            HttpConfiguration config = new HttpConfiguration();
            config.EnableCors();
            config.Routes.MapHttpRoute(
                name: "createUserApi",
                routeTemplate: "Bitvise/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
                );

            // This is the call to our swashbuckle config that needs to be called 
            SwaggerConfig.Register(config);

            appBuilder.UseWebApi(config);
        }
    }
}

Начало BitViseController.cs:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Collections;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.Cors;
using BssCfg815Lib;
using System.Security.Cryptography;
using System.Text;
using NLog;

namespace BitVise
{

    [EnableCors(origins: "*", headers: "*", methods: "*")]

    public class VirtAccountsController : ApiController
    {
        public IEnumerable<LocalVirtAccount815> Get(string username, string password)
        {
            string result;
            BitViseHelper helper = new BitViseHelper();
            helper.Log(LogLevel.Info, "Call to VirtAccounts. Login: username=" + username + ", password=" + password);
            bool loginOkay = helper.CheckUser(username, password, out result);
            if (!loginOkay)
            {
                helper.Log(LogLevel.Error, "  Login failed: " + result);
                return null;
            }
            helper.Log(LogLevel.Info, "  Login succeeded.");
            List<LocalVirtAccount815> virtAccounts = helper.ListVirtAccounts();
            helper.Log(LogLevel.Info, "  " + virtAccounts.Count + " Virtual accounts retrieved.");
            return virtAccounts;
        }
    } // VirtAccountsController
...
...

Изображение, показывающее, что консольное приложение работает, прослушивание и браузер, показывающий ошибку.

(На изображении неверный URL в браузере. Это должно быть https://localhost: 44311 / BitVise / Test , но результат тот же.)

У кого-нибудь есть идея, что я забыл или что я делаю не так?

Заранее спасибо,

Кор

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