将 MVC 应用程序部署到服务器后,JQuery 文件 404(未找到)和 500(内部服务器错误)
Posted
技术标签:
【中文标题】将 MVC 应用程序部署到服务器后,JQuery 文件 404(未找到)和 500(内部服务器错误)【英文标题】:JQuery File 404 (Not Found) and 500 (Internal Server Error) after deploying MVC app to Server 【发布时间】:2018-03-08 20:39:48 【问题描述】:我看到很多人都在为同样的问题而苦苦挣扎,但似乎没有人将我引向正确的方向 - 也许我没有正确理解,或者我的情况有点不同 - 我创建了一个运行完美的 MVC 应用程序在我的本地,但一旦部署,我在控制台中收到以下错误:
加载资源失败:服务器响应状态为 404 (未找到):glyphicons-halflings-regular.woff2
加载资源失败:服务器响应状态为 404 (未找到):/api/notifications
加载资源失败:服务器响应状态为 500 (内部服务器错误) : BudgetingTool/Account/UserDetails?searchTerm=Peter+Pan&_=1506510511716
最后一个是最重要的,因为它用于返回数据。其代码如下:
public ActionResult UserDetails(string searchTerm = null)
var data = UserManager.Users.FirstOrDefault(r => (r.FirstName + " " + r.LastName) == searchTerm);
IEnumerable<SelectListItem> rolesList = null;
IEnumerable<SelectListItem> organisationList = null;
Organisation organisation = null;
Department department = null;
if (data != null)
var userOrganisations = _organisationRepo.GetUserAssignedOrganisation(data.Id);
organisation = _repository.FindOrganisationById(data.OrganisationId);
department = _departmentRepo.FindDepartmentById(organisation.DepartmentId);
rolesList = ShowAllowedRoles(data.Id);
organisationList =
_repository.GetOrganisationsInHierarchyOrder(0,0,0).Select(r => new SelectListItem
Selected = userOrganisations.Any(x => x.OrganisationId == r.OrganisationId) ? true : false,
Text = r.Name,
Value = r.OrganisationId.ToString()
);
//SelectedOrganisations = OrganisationList.Where(x => x.Selected == true).ToList().Select(r=> new List<string> r.Value);
else
organisationList = _repository.GetOrganisationsInHierarchyOrder(0, 0, 0).GroupBy(m => m.Name).Select(y => y.First()).Select(r => new SelectListItem
Selected = false,
Text = r.Name,
Value = r.OrganisationId.ToString()
);
rolesList = GetRolesList();
var model = new UpdateUserInfoVM
Id = data == null ? string.Empty : data.Id,
FirstName = data == null ? string.Empty : data.FirstName,
LastName = data == null ? string.Empty : data.LastName,
Email = data == null ? string.Empty : data.Email,
Allowbudgetdeletion = data?.Allowbudgetdeletion ?? false,
LockoutEnabled = data?.LockoutEnabled ?? false,
//OrganisationId = data == null ? string.Empty : data.OrganisationId,
OrganisationId = data?.OrganisationId ?? 0,
Organisations = organisationList,
Roles = rolesList,
AccessFailedCount = data?.AccessFailedCount ?? 0,
LockoutEndDateUtc = data?.LockoutEndDateUtc,
AllowEditing = data.AllowEditing,
DistrictOrUrban = data?.DistrictOrUrban,
departmentId = organisation.DepartmentId,
DepartmentType = department.Name
//SelectedOrganisations = SelectedOrganisations
;
return PartialView("_ShowUserInfo", model);
//return Request.IsAjaxRequest() ? PartialView("_ShowUserInfo", model) : PartialView("_ShowUserInfo", model);
当我点击控制台中的错误链接时,这是显示的(好像没有值通过???
“/BudgetingTool”应用程序中的服务器错误。
对象引用未设置为对象的实例。
描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详细信息:System.NullReferenceException:没有对象引用 设置为对象的实例。
我只是不明白它是如何在我的本地上完美运行的,但在发布然后部署到远程服务器时却不行。
该文件夹是一个虚拟目录,包含项目文件的文件夹与“Everyone”和“IIS_IUSR”共享 - 两者都具有读/写权限。
人们可以寻找的最普遍的东西是什么?我确定它很简单,但就是不知道它是什么:(
任何对正确方向的帮助都会有很大帮助。
谢谢!
【问题讨论】:
至少对于“woff2”文件,这肯定是 IIS 配置中缺少/错误的 mime 类型的问题:***.com/a/28955302/265165 您的 NullReferenceException 是另一个问题的根源。可能某些查询没有返回预期的数据,这可能是与数据库的连接错误、缺少权限、迁移失败等。我们无法猜测出什么问题。启用异常日志记录以在日志中查找错误 感谢您的回复 - 我尝试将其添加到我的 web.config 中,但没有任何区别 :( 浏览器上是否有异常日志记录?如何启用此功能以及在哪里可以找到日志? 服务器上出现异常。登录 ASP.NET 是一个单独的主题,我不能在这里提供任何详细信息(这里和那里,建议使用名为 ELMAH 的工具来轻松获取更多详细信息,但是是的,只需 google 即可)。 谢谢!所以我觉得有点愚蠢......第3点的问题实际上是因为数据问题。我将数据库从服务器上拉下来,并在我的本地开发中使用它,并发现我使用的不正确(这是因为以前应该删除的现有数据)。至于其他两点,我还是有点难过。但是,感谢您尝试提供帮助。 (难怪找到的其他链接都不起作用:-/) 【参考方案1】:在 DevOps 中有一句谚语说:“它不起作用,除非它在你的开发机器之外的其他地方工作”。在这里,您的代码未通过该测试。开发盒是一个原始环境,您可以准确地设置它应该是什么,并确保您的本地数据库具有绝对正确的数据等。现实世界的宽容度要低得多,当您执行诸如从数据库中查询事物之类的事情时,如果您没有正确编码,您的生产环境会很好。
也就是说,每当您从数据库中查询某些内容时,您都必须考虑到您所查询的内容未被找到。即使它应该在那里,墨菲定律说它不会在某个时候出现。当您的查询没有返回任何内容时,该变量将被设置为 null,如果您没有在代码中进行正确的 null 检查,您将得到像这样的NullReferenceException
s。
简单地说,NullReferenceException
意味着您尝试访问类型实例的有效成员,但该实例实际评估为 null,并且 null 没有该特定成员。例如:
organisation = _repository.FindOrganisationById(data.OrganisationId);
department = _departmentRepo.FindDepartmentById(organisation.DepartmentId);
在这里,您假设 Organization
实例存在,但很可能不存在。如果您有 Organization
的实例,尝试检索 organization.DepartmentId
的值是完全有效的,但如果您的 organization
变量实际上为 null,那么 null 没有 DepartmentId
成员和繁荣:@987654329 @。
任何时候你有任何可能为空的变量,假设它会是,并相应地设计你的代码。
【讨论】:
我实际上会将你的答案标记为答案 - 因为正如我现在在我的帖子的评论中提到的那样,它与数据相关 - 顺便说一句,错误恰好发生在 _departmentRepo.FindDepartmentById ' 代码行。至于其他 2 项,我只需要检查返回的 URL,我确定这就是为什么找不到它们....我希望。谢谢@Chris!以上是关于将 MVC 应用程序部署到服务器后,JQuery 文件 404(未找到)和 500(内部服务器错误)的主要内容,如果未能解决你的问题,请参考以下文章
将 Rails 应用程序部署到 Heroku 后,不显示 JQuery 函数中的图像
将 MVC 应用程序部署到 Azure 应用程序服务时出现 POSTS 问题