I'm attempting to use Steve Sanderson's blog post in order to edit a variable length list in my ASP MVC 3 view. The project builds fine, however whenever the partial view is rendered the program blows up on the using(Html.BeginColletionItem()
line with this error:
AccessViolationException was unhandled
Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Here's a screen shot of the full exception
Complete stack trace below
at Microsoft.VisualStudio.WebHost.Host.ProcessRequest(Connection conn)
at Microsoft.VisualStudio.WebHost.Server.OnSocketAccept(Object acceptedSocket)
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
Partial View
@model Monet.Models.AgentRelationshipCodes
@using (Html.BeginCollectionItem("AgentRelationshipCodes")) @*Exception thrown here*@
{
<tr>
<td>@Html.EditorFor(model => model.EffectiveDate, "NullableDate", new { @class = "relCodeDate2" })</td>
<td>@Html.EditorFor(model => model.RelationshipId, "NullableDate", new { @class = "relDistCode1", maxlength = 3 })</td>
@Html.HiddenFor(model => model.ID)
@Html.HiddenFor(model => model.RelCodeOrdinal)
</tr>
}
View
<script>
$(document).ready(function() {
$(".addCode").click(function () {
$.ajax({
url: '@Url.Action("NewRelationshipCode", "AgentTransmission")',
dataType: 'html',
cache: false,
success: function (html) {
console.log(html);
$("#Experiment > tbody").append(html);
}
})
});
});
</script>
.
.
<fieldset>
<legend>Relationship Codes</legend>
<table id="Experiment">
<thead>
<tr>
<th>Relationship Effective Date</th>
<th>Relationship Dist Code</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.AgentRelationshipCodes)
{
@Html.Partial("AddRelationshipCodePartial", item)
}
</tbody>
</table>
<br/>
<a href="javascript:void(0)" class ="addCode">Add Another</a>
</fieldset>
Controller
[HandleProcessCorruptedStateExceptions]
public ViewResult NewRelationshipCode()
{
return View("AddRelationshipCodePartial", new AgentRelationshipCodes());
}
AgentRelationshipCodes
namespace Monet.Models
{
using System;
using System.Collections.Generic;
public partial class AgentRelationshipCodes
{
public int ID { get; set; }
public int RelCodeOrdinal { get; set; }
public string RelationshipId { get; set; }
public Nullable<System.DateTime> EffectiveDate { get; set; }
public System.DateTime LastChangeDate { get; set; }
public string LastChangeId { get; set; }
public virtual AgentTransmission AgentTransmission { get; set; }
}
}
EDIT
I've been able to get the demo working in a project outside the solution I'm using right now, so it apparently has to do with some dlls in this workspace. Now I'm above my paygrade, however, as I'm unsure how to debug something like this. Here are the exceptions that are identified by WinDbg prior to Visual Studio throwing the AccessViolationException
. There is A LOT of information in between the exceptions being thrown, if that is needed by anyone please let me know.
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\d12f4fda3d1bfabf888342e96983e9a7\mscorlib.ni.dll
*** ERROR: Module load completed but symbols could not be loaded for C:\Windows\assembly\NativeImages_v4.0.30319_32\mscorlib\d12f4fda3d1bfabf888342e96983e9a7\mscorlib.ni.dll
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Xaml\9d3572e8c3c314a0f12383d41e8bee78\System.Xaml.ni.dll
*** ERROR: Module load completed but symbols could not be loaded for C:\Windows\assembly\NativeImages_v4.0.30319_32\System.Xaml\9d3572e8c3c314a0f12383d41e8bee78\System.Xaml.ni.dll
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v4.0.30319_32\Presentatio5ae0f00f#\8711b01d60a94d6ef6a02d7fd0578493\PresentationFramework.ni.dll
*** ERROR: Module load completed but symbols could not be loaded for C:\Windows\assembly\NativeImages_v4.0.30319_32\Presentatio5ae0f00f#\8711b01d60a94d6ef6a02d7fd0578493\PresentationFramework.ni.dll
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v4.0.30319_32\WindowsBase\ac2e26bafa70e93b307087d7fe6b9dd2\WindowsBase.ni.dll
*** ERROR: Module load completed but symbols could not be loaded for C:\Windows\assembly\NativeImages_v4.0.30319_32\WindowsBase\ac2e26bafa70e93b307087d7fe6b9dd2\WindowsBase.ni.dll
*** WARNING: Unable to verify checksum for C:\Windows\assembly\NativeImages_v4.0.30319_32\Microsoft.V4e91a071#\207156ac71b58fb31310a2f78c3d0c44\Microsoft.VisualStudio.Web.Application.ni.dll
*** ERROR: Module load completed but symbols could not be loaded for C:\Windows\assembly\NativeImages_v4.0.30319_32\Microsoft.V4e91a071#\207156ac71b58fb31310a2f78c3d0c44\Microsoft.VisualStudio.Web.Application.ni.dll
UPDATE
By selecting the "Native Code" option in the project's Debuggers menu
I now receive a slightly more detailed error message:
Lastly, by switching to IIS Express as suggested below I am still receiving the AccessViolationException
. Here are the settings I used to enable IIS for debugging (under project properties)
Here is the error message
Call stack:
AccessViolationException
occurs. – PenguinBeginCollectionItem
plugin in a parital view. The error is thrown on theusing
statment for this plugin in the view. If I can figure out how to get a stack trace from there I will post it. And yes, I am using a couple 3rd party plugins:EPPlus
,Automapper
, andBeginCollectionItem
– PenguinStackTrace
was available in the post already. – Penguin