ASP.NET MVC 应用程序在调试时工作,但在使用 Plesk 和 GoDaddy 发布时不工作

ASP.NET MVC app works in debug but not when published using Plesk and GoDaddy

我有一个在调试模式和测试中完美运行的 MVC 应用程序,但在我使用 ftp 发布到 godaddy 后,该网站打开并在主页和登录页面之间切换时运行。如果我尝试登录时出现错误,或者如果我尝试使用主页上的搜索框时,我也会出现错误。这是屏幕截图:

在我登录或基本上任何事情或 'mydomain'.com/Home/Index/ 我得到这个错误,如果我尝试 'mydomain'.com/Home/Search'mydomain'.com/Search/Index 任何其他控制器或操作我得到这个。可能是什么原因,因为我已经尝试了一切?例如是 HomeController/Search:

public ActionResult Search(string search, string searchlast)
    {
        var doctors = from d in db.Doctors
                      select d;
        if (!String.IsNullOrEmpty(search) || !String.IsNullOrEmpty(searchlast))
        {
            doctors = doctors.Where(d => d.FirstName.Contains(search) && d.LastName.Contains(searchlast));
            return View(doctors.ToList());
        }
        return RedirectToAction("Index", "Home");
    }

这里是 Views/Home/Search,它给出了错误:

@model IEnumerable<Systemz.Models.Check>
@{
    ViewBag.Title = "Search";
}

<div class="jumbotron">
    <h2>Check</h2>
    <h4>Check for availability.</h4>
</div>

@using (Html.BeginForm("Search", "Home", FormMethod.Post))
{
    <p>
        First Name: @Html.TextBox("search") Last Name: @Html.TextBox("searchlast")
        <input type="submit" value="Search" name="search" />
        <a asp-action="Search" asp-controller="Home"></a>
    </p>
}

<table class="table table-hover dataTable">
    <div class="row">
        <div class="col-md-4">
            <thead class="bd-dark white-text">
                <tr>
                    <th>
                        Title:
                    </th>
                    <th>
                        First Name:
                    </th>
                    <th>
                        Last Name:
                    </th>
                    <th>
                        Address:
                    </th>
                    <th>
                        Is Available?
                    </th>
                </tr>
            </thead>
            <tbody>
                @foreach (var item in Model)
                {
                    <tr>
                        <td>
                            @Html.DisplayFor(modelItem => item.Title)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.FirstName)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.LastName)
                        </td>
                        <td>
                            @Html.DisplayFor(modelItem => item.Address)
                        </td>
                        <td>
                            @if (item.IsAvailable == true)
                            {<p><a class="btn btn-success"></a></p> }
                            else
                            { <p><a class="btn btn-danger"></a></p>}
                        </td>
                    </tr>
                }
            </tbody>
        </div>
    </div>
</table>

您必须上传您的数据库。在您的 Godaddy 托管服务器上没有 (LocalDb) 这样的东西。您还必须将您的数据库上传到 Godaddy,找出该位置的连接字符串,然后将其正确部署到您的站点。如果它前面没有任何防火墙,您甚至可以测试从本地计算机到该数据库的连接。

编辑:仅仅上传数据库文件是不够的。您必须通过他们自己的工具设置数据库,以便它正确附加等等。

@Daniel Lorenz 的回答有点帮助,我本来以为可能是 <connectionString/> 然后我发问题的时候觉得可能是路由,发了答案之后才发现是<connectionString/> 和数据库更新为 DbContextName。得到正确后

<add name="DbContextName" connectionString="DataSource=ServerName;
    Integrated Security=False;Initial Catalog=DbName;User Id=username;
        Password=password;Encrypt=False;Packet Size=4096;" providerName=
            "System.Data.SqlClient" />

然后在程序包管理器控制台中:

update-database -ConnectionStringName "DbContextName"

然后发布,一切正常。