.NET 4.8 网站上的 ASP.NET MVC 不显示 Azure 应用服务上的所有页面

问题描述 投票:0回答:1

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 的调试器,但这对我没有帮助。

sql-server asp.net-mvc azure azure-web-app-service
1个回答
0
投票

我尝试了简单的 ASP。 NET MVC Framework 4.8 与 SQL Server 并将其部署到 Azure。

确保部署到 Azure 时正确迁移数据库架构。如果您使用实体框架代码优先迁移,请确保您的迁移已正确应用到 Azure SQL 数据库。

确保您的 Azure SQL 数据库已正确配置并可通过 Azure 应用服务进行访问。

这是我的控制器,用于创建和更新数据库中的数据。

EntrepotsController

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 连接字符串。

Web.Config

 <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>

本地输出:

enter image description here

在将 Web 应用程序部署到 Azure 之前,如果要使用本地 SQL 数据库连接字符串生成迁移,请删除这些迁移并使用 Azure SQL 数据库连接字符串生成新迁移。

Azure 应用服务输出

enter image description here

下面是我的 Azure Sql 数据库输出:

enter image description here

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.