Azure выбрасывает 404 на JQuery запрос данных, но страница отображается в браузере - PullRequest
0 голосов
/ 01 марта 2020

Я возился с сайтом на портале для бизнеса, ничего особенного, чтобы просто поиграть больше всего на свете, и я сделал несколько таких, где они используют ASP. NET MVC для довольно упрощения c API и доступ к базе данных (последняя попытка, которая работала нормально, была секцией комментариев в блоге, которую я так и не закончил, но она работала нормально).

Я скопировал и вставил огромное количество из этой последней проект и он отлично работает на локальном хосте, но по какой-то причине он выдает ошибку 404, загруженную в Azure. Это не междоменный домен, хотя я играл с CORS после нескольких запросов, которые я нашел здесь вчера. Когда я медленно вытащил код из сценария, я обнаружил, что он не работает вокруг SQL соединения (без него он не генерировал 404, но потребовалось около десятка публикаций с медленным удалением кода, чтобы добраться до этого).

Я честно потянул за это свои волосы. Я перепробовал почти все: я попытался поместить код на страницу Razor и загрузить его; Я пробовал другие версии MVC; Я пытался использовать шаблонные контроллеры API; Я пробовал диапазон Azure экземпляров сервера как Windows на Core 3, так и Linux на Core 3.1. Сегодняшняя попытка состояла в том, чтобы изучить основы 1026 * Entity Framework и кодировать ее, в случае, если SQLConnection каким-то образом обесценится в этой версии на Azure. Я посмотрел на диагностику на Azure, но хотя я вижу 404 запросов, которые я делаю, я не вижу подробностей о них сбоев в них, как если бы они были обычными 404 запросами, но я знаю, что контроллеры работают, потому что я не появляется ошибка 404, если я просто щелкаю запрос в Firefox Developer Tools на вкладке Network, и он нормально загружается.

Более новый контроллер входа Entity Framework (который даже не работает полностью, но делает немного, прежде чем я попытался загрузить его и обнаружил ту же ошибку 404 по запросу):

public partial class ApiController : ControllerBase
    {
        [HttpGet("/api/login/")]
        public String Login()
        {
            Boolean Authorised = false;

            String Token = "";
            String UserId = "";
            String Username = "";

            StringValues AuthorisationHeaderValues = "";

            Request.Headers.TryGetValue("Authorisation", out AuthorisationHeaderValues);

            String AuthorisationUser = Convert.ToString(Request.Query["u"]);
            String AuthorisationPassword = AuthorisationHeaderValues.FirstOrDefault();

            if (!String.IsNullOrEmpty(AuthorisationUser) && !String.IsNullOrEmpty(AuthorisationPassword))
            {
                AuthorisationUser = Encryption.AtoB(AuthorisationUser);

                if (_Context.Users.Any(o => o.Username == AuthorisationUser))
                {
                    var Query = _Context.Users
                       .Where(s => s.Username == AuthorisationUser)
                       .FirstOrDefault<User>();

                    UserId = Convert.ToString(Query.UserId);
                }
            }

            String Response = "";

            if (Authorised)
            {
                Response = JsonConvert.SerializeObject(new
                {
                    auth = @"success",
                    token = Token,
                    userid = UserId,
                    username = Username
                });
            }
            else
            {
                Response = JsonConvert.SerializeObject(new
                {
                    auth = @"fail"
                });
            }

            return Response;
        }
    }

Исходный контроллер входа SqlConnection был:

public class ApiLogin1Controller : Controller
    {
        [HttpGet("/api/login/")]
        public string Get()
        {
            Boolean Authorised = false;

            String Token = "";
            String UserId = "";
            String Username = "";

            StringValues AuthorisationHeaderValues = "";

            Request.Headers.TryGetValue("Authorisation", out AuthorisationHeaderValues);

            String AuthorisationUser = Convert.ToString(Request.Query["u"]);
            String AuthorisationPassword = AuthorisationHeaderValues.FirstOrDefault();

            if (!String.IsNullOrEmpty(AuthorisationUser) && !String.IsNullOrEmpty(AuthorisationPassword))
            {
                using (SqlConnection Connection = new SqlConnection("Server=aqht.database.windows.net;Database=aqht;User Id=aquaheat;Password=A38625e5dD729#;"))
                {
                    SqlCommand Command = new SqlCommand("aqsp_user_login", Connection);

                    Command.Parameters.AddWithValue("@username", Encryption.AtoB(AuthorisationUser));
                    Command.Parameters.AddWithValue("@password", Encryption.AtoB(AuthorisationPassword.Remove(0, 6)));

                    Command.Parameters.Add("@output", SqlDbType.NVarChar);
                    Command.Parameters["@output"].Size = 128;
                    Command.Parameters["@output"].Direction = ParameterDirection.Output;

                    Command.Parameters.Add("@name", SqlDbType.NVarChar);
                    Command.Parameters["@name"].Size = 128;
                    Command.Parameters["@name"].Direction = ParameterDirection.Output;

                    Command.Parameters.Add("@token", SqlDbType.UniqueIdentifier);
                    Command.Parameters["@token"].Direction = ParameterDirection.Output;

                    Connection.Open();

                    Command.CommandType = CommandType.StoredProcedure;

                    Int32 i = Command.ExecuteNonQuery();

                    UserId = Convert.ToString(Command.Parameters["@output"].Value);
                    Username = Convert.ToString(Command.Parameters["@name"].Value);

                    if (UserId.Length > 3)
                    {
                        Token = Convert.ToString(Command.Parameters["@token"].Value);

                        Authorised = true;
                    }

                    Connection.Close();
                }
            }

            String Response = "";

            if (Authorised)
            {
                Response = JsonConvert.SerializeObject(new {
                    auth = @"success",
                    token = Token,
                    userid = UserId,
                    username = Username
                });
            }
            else
            {
                Response = JsonConvert.SerializeObject(new {
                    auth = @"fail"
                });
            }

            return Response;
        }
    }

Запрос JQuery это:

$.ajax({
   url: "http://aqht.net/api/login/?u=" + emailtosend,
      beforeSend: function (xhr) {
         xhr.setRequestHeader("Authorisation", "Dblrs " + passwordtosend);
      }
   }).done(function (data) {
      aq_login_process(jQuery.parseJSON(data));
   }).fail(function (data) {
      aq_login_fail();
   });

Я в лучшем случае всего лишь программист-любитель, это веселее, чем создавать или достигать чего-либо, но, честно говоря, это действительно беспокоит меня сейчас, я не думаю, что я глуп, но Я также не знаю, что я мог сделать неправильно - за пару лет я выполнил множество таких действий точно так же, и это никогда не подводило так.

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