无法加载资源:服务器响应状态为 500(内部服务器错误)Azure MVC
Failed to load resource: the server responded with a status of 500 (Internal Server Error) Azure MVC
我制作了 MVC 项目并将其发布到 Azure。在 IIS 本地服务器中,它工作正常,但在 Azure 上,当它路由到删除时,它不会路由到删除视图并停止在删除操作中,而是出现:
当我打开浏览器的控制台时,会出现此问题消息:
Failed to load resource: the server responded with a status of 500
(Internal Server Error)
这是代码:
控制器:
public class GroupsController : Controller
{
//the rest of the code
// GET: Groups
public ActionResult Index()
{
List<GroupsModels> groups = GetJsonFile();
return View(groups);
}
// GET: Groups/Delete/
[HttpGet]
public ActionResult Delete(int id,string groupname,string useremail)
{
GroupsModels temp = new GroupsModels
{
ID = id,
Name = groupname,
newuser = useremail
};
return View(temp);
}
}
模特:
public class GroupsModels
{
public GroupsModels()
{
this.UserEmail = new List<string>();
}
public int ID { get; set; }
public string Name { get; set; }
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string newuser { get; set; }
public List<string> UserEmail { get; set; }
}
索引视图:
@model IEnumerable<DashBoard.Models.GroupsModels>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Roles</h2>
@foreach (var item in Model)
{
<div class="row alert-success" style="text-align: center;font-size:large; padding:10px;">
<div class="col-sm">
<b> @Html.DisplayFor(modelItem => item.Name) |</b>
@Html.ActionLink("Add User", "Add", "Groups", new { GroupId = item.ID },null)
</div>
</div>
<div class="row border-bottom border ">
@for (int i = 0; i < item.UserEmail.Count(); ++i)
{
<div class="col-6 col-md-4 border">
<b> @Html.DisplayFor(modelItem => item.UserEmail[i])|</b>
@Html.ActionLink("Delete","Delete","Groups",new { id = item.ID, groupname = item.Name, useremail = item.UserEmail[i] },null)
</div>
if (i == 2)
{
<div class="w-100"></div>
}
}
</div>
<br />
}
删除视图:
@model DashBoard.Models.GroupsModels
@{
ViewBag.Title = "Delete";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Delete</h2>
<h3>Are you sure you want to delete this?</h3>
<div>
<h4>GroupsModels</h4>
<hr />
<dl class="dl-horizontal">
<dt>
<b>Group Name</b>
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
<dt>
<B>User Email</B>
</dt>
<dd>
@Html.DisplayFor(model => model.newuser)
</dd>
</dl>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
<div class="form-actions no-color">
<input type="submit" value="Delete" class="btn btn-default" /> |
@Html.ActionLink("Back to List", "Index")
</div>
}
</div>
请问有什么问题?我该如何解决?
代码 500 表示该应用未找到您要查找的源,可能是控制器或操作名称错误或参数丢失或错误我认为您应该将 ActionLink 更改为:
@Html.ActionLink("Delete","Delete","Groups",new { id = item.ID, groupname = item.Name, useremail = item.UserEmail[i] })
在我按照端到端交易细节进行操作后,我发现了这个问题:
A claim of type
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier'
or
'http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider'
was not present on the provided ClaimsIdentity. To enable anti-forgery
token support with claims-based authentication, please verify that the
configured claims provider is providing both of these claims on the
ClaimsIdentity instances it generates. If the configured claims
provider instead uses a different claim type as a unique identifier,
it can be configured by setting the static property
AntiForgeryConfig.UniqueClaimTypeIdentifier.
我通过将此代码行添加到 Global.asax
来解决它
AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier;
使用这些:
using System.Security.Claims;
using System.Web.Helpers;
我制作了 MVC 项目并将其发布到 Azure。在 IIS 本地服务器中,它工作正常,但在 Azure 上,当它路由到删除时,它不会路由到删除视图并停止在删除操作中,而是出现:
当我打开浏览器的控制台时,会出现此问题消息:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
这是代码:
控制器:
public class GroupsController : Controller
{
//the rest of the code
// GET: Groups
public ActionResult Index()
{
List<GroupsModels> groups = GetJsonFile();
return View(groups);
}
// GET: Groups/Delete/
[HttpGet]
public ActionResult Delete(int id,string groupname,string useremail)
{
GroupsModels temp = new GroupsModels
{
ID = id,
Name = groupname,
newuser = useremail
};
return View(temp);
}
}
模特:
public class GroupsModels
{
public GroupsModels()
{
this.UserEmail = new List<string>();
}
public int ID { get; set; }
public string Name { get; set; }
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string newuser { get; set; }
public List<string> UserEmail { get; set; }
}
索引视图:
@model IEnumerable<DashBoard.Models.GroupsModels>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Roles</h2>
@foreach (var item in Model)
{
<div class="row alert-success" style="text-align: center;font-size:large; padding:10px;">
<div class="col-sm">
<b> @Html.DisplayFor(modelItem => item.Name) |</b>
@Html.ActionLink("Add User", "Add", "Groups", new { GroupId = item.ID },null)
</div>
</div>
<div class="row border-bottom border ">
@for (int i = 0; i < item.UserEmail.Count(); ++i)
{
<div class="col-6 col-md-4 border">
<b> @Html.DisplayFor(modelItem => item.UserEmail[i])|</b>
@Html.ActionLink("Delete","Delete","Groups",new { id = item.ID, groupname = item.Name, useremail = item.UserEmail[i] },null)
</div>
if (i == 2)
{
<div class="w-100"></div>
}
}
</div>
<br />
}
删除视图:
@model DashBoard.Models.GroupsModels
@{
ViewBag.Title = "Delete";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Delete</h2>
<h3>Are you sure you want to delete this?</h3>
<div>
<h4>GroupsModels</h4>
<hr />
<dl class="dl-horizontal">
<dt>
<b>Group Name</b>
</dt>
<dd>
@Html.DisplayFor(model => model.Name)
</dd>
<dt>
<B>User Email</B>
</dt>
<dd>
@Html.DisplayFor(model => model.newuser)
</dd>
</dl>
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
<div class="form-actions no-color">
<input type="submit" value="Delete" class="btn btn-default" /> |
@Html.ActionLink("Back to List", "Index")
</div>
}
</div>
请问有什么问题?我该如何解决?
代码 500 表示该应用未找到您要查找的源,可能是控制器或操作名称错误或参数丢失或错误我认为您应该将 ActionLink 更改为:
@Html.ActionLink("Delete","Delete","Groups",new { id = item.ID, groupname = item.Name, useremail = item.UserEmail[i] })
在我按照端到端交易细节进行操作后,我发现了这个问题:
A claim of type 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier' or 'http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider' was not present on the provided ClaimsIdentity. To enable anti-forgery token support with claims-based authentication, please verify that the configured claims provider is providing both of these claims on the ClaimsIdentity instances it generates. If the configured claims provider instead uses a different claim type as a unique identifier, it can be configured by setting the static property AntiForgeryConfig.UniqueClaimTypeIdentifier.
我通过将此代码行添加到 Global.asax
来解决它AntiForgeryConfig.UniqueClaimTypeIdentifier = ClaimTypes.NameIdentifier;
使用这些:
using System.Security.Claims;
using System.Web.Helpers;