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"
然后发布,一切正常。
我有一个在调试模式和测试中完美运行的 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"
然后发布,一切正常。