ASP.NET MVC на веб-сайте .NET 4.8 не отображает все страницы в Службе приложений Azure

ASP.NET MVC отлично работает на локальном компьютере, но после развертывания в Службе приложений Azure страницы, связанные с операцией записи в базе данных, не отображаются (страницы, которые добавляют данные в базу данных, и страницы, которые обновляют данные в базе данных).

Вот пример кода одного контроллера, который вставляет данные:

public ActionResult Create()
{
    ViewBag.nbEnt = db.Entrepots.Where(e => e.active == true).Count();
    return View();
}
  
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,entrName,entrAdres,LocaliteId,entrFreePlace,entrBusyPlace,entrTotalPlace,active")] Entrepot entrepot)
{
    if (ModelState.IsValid)
    {
        entrepot.active = true;
        db.Entrepots.Add(entrepot);

        db.SaveChanges();

        TempData["action"] = "add";

        return RedirectToAction("Index");
    }

    ViewBag.LocaliteId = new SelectList(db.Localites, "Id", "locTown", entrepot.LocaliteId);

    return View(entrepot);
} 

Вот пример обновления:

public ActionResult Edit(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }

    Entrepot entrepot = db.Entrepots.Find(id);

    if (entrepot == null)
    {
        return HttpNotFound();
    }

    return View(entrepot);
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Id,entrName,entrAdres,LocaliteId,entrFreePlace,entrBusyPlace,entrTotalPlace,active")] Entrepot entrepot)
{
    if (ModelState.IsValid)
    {
        db.Entry(entrepot).State = EntityState.Modified;
        db.SaveChanges();

        return RedirectToAction("Index");
    }

    ViewBag.LocaliteId = new SelectList(db.Localites, "Id", "locTown", entrepot.LocaliteId);

    return View(entrepot);
}

Любая подсказка или совет по этому поводу?

Спасибо.

Я пробовал отладчик, связанный с Visual Studio, но это мне не помогло.

Удалось ли вам получить сообщение об ошибке?

BillRuhl 08.04.2024 21:42

@Kris_belgium У вас возникает какая-либо ошибка? если да, можете ли вы поделиться ошибкой.

Aslesha Kantamsetti 10.04.2024 06:54

@Kris_belgium Вы развернули свой сервер Sql на сервере Azure Sql?

Aslesha Kantamsetti 10.04.2024 06:56

@Kris_belgium Проверьте журналы службы приложений и строку подключения.

Aslesha Kantamsetti 10.04.2024 07:04

@AsleshaKantamsetti да, я развернул его, и отображались только те страницы, где не было UPDATE или INSERT в БД (страницы SELECT были в порядке)

Kris_belgium 10.04.2024 21:47
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я попробовал простой ASP. NET MVC Framework 4.8 с SQL Server и развернул его в Azure.

Убедитесь, что схема базы данных правильно перенесена при развертывании в Azure. Если вы используете миграцию Entity Framework Code First, убедитесь, что ваши миграции правильно применяются к базе данных SQL Azure.

Убедитесь, что ваша база данных SQL Azure правильно настроена и доступна из службы приложений Azure.

Это мой контроллер, используемый для создания и обновления данных в моей базе данных.

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

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using WebApplication4.Models;

namespace WebApplication4.Controllers
{
    public class EntrepotsController : Controller
    {
        private EntrepotDbContext db = new EntrepotDbContext();
        public ActionResult Index()
        {
            return View(db.Entrepots.ToList());
        }
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Entrepot entrepot = db.Entrepots.Find(id);
            if (entrepot == null)
            {
                return HttpNotFound();
            }
            return View(entrepot);
        }
        public ActionResult Create()
        {
            return View();
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "Id,entrName,entrAdres,LocaliteId,active")] Entrepot entrepot)
        {
            if (ModelState.IsValid)
            {
                db.Entrepots.Add(entrepot);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(entrepot);
        }
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Entrepot entrepot = db.Entrepots.Find(id);
            if (entrepot == null)
            {
                return HttpNotFound();
            }
            return View(entrepot);
        }
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "Id,entrName,entrAdres,LocaliteId,active")] Entrepot entrepot)
        {
            if (ModelState.IsValid)
            {
                db.Entry(entrepot).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(entrepot);
        }
        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Entrepot entrepot = db.Entrepots.Find(id);
            if (entrepot == null)
            {
                return HttpNotFound();
            }
            return View(entrepot);
        }
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            Entrepot entrepot = db.Entrepots.Find(id);
            db.Entrepots.Remove(entrepot);
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }
    }
}

Ниже приведена строка подключения к Azure SQL Server.

Веб.Конфигурация:

 <connectionStrings>
   <add name = "ConnectionString" connectionString = "Server=tcp:<ServerName>.database.windows.net,1433;Initial Catalog=<DataBaseName>;Persist Security Info=False;User ID=<UserName>;Password=<Password>;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;" providerName = "System.Data.SqlClient" />
 </connectionStrings>

Локальный выход:

Если перед развертыванием веб-приложения в Azure вы создаете миграции с использованием строки ConnectionString локальной базы данных SQL, удалите эти миграции и создайте новые миграции с помощью ConnectionString базы данных SQL Azure.

Вывод службы приложений Azure:

Ниже приведены результаты моей базы данных Azure Sql:

Ответ принят как подходящий

Мне удалось решить проблему, удалив из просмотра токен защиты от подделки.

@Html.AntiForgeryToken()

а также удалил его из контроллера:

        [HttpPost]
   //   [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "Id,entrName,entrAdres,LocaliteId,entrFreePlace,entrBusyPlace,entrTotalPlace,active")] Entrepot entrepot)
        {
        if (ModelState.IsValid)...

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

Другие вопросы по теме