我刚刚开始学习asp.net MVC3,我遇到了这个问题:
我正在使用visual studio 2010,并且在构建期间没有错误,只有当我尝试运行应用程序时。 我在Google上搜索答案但没有成功。 有谁知道如何解决这个问题?
谢谢!
EDIT-ContextModule代码:
using System;
using System.Web;
namespace testbaza.Models
{
public class ContextModule : IHttpModule
{
internal const string CONTEXT_KEY = "datacontext";
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.PostRequestHandlerExecute += new EventHandler(context_PostRequestHandlerExecute);
context.PreRequestHandlerExecute += new EventHandler(context_PreRequestHandlerExecute);
}
private void context_PreRequestHandlerExecute(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null)
{
HttpContext.Current.Session[CONTEXT_KEY] = new EntitiesModel();
}
}
private void context_PostRequestHandlerExecute(object sender, EventArgs e)
{
CommitTransactions();
DisposeContext();
ClearSession();
}
private void CommitTransactions()
{
if (HttpContext.Current.Session == null)
{
return;
}
EntitiesModel dbContext =
HttpContext.Current.Session[CONTEXT_KEY] as EntitiesModel;
if (dbContext != null)
{
dbContext.SaveChanges();
}
}
private void DisposeContext()
{
if (HttpContext.Current.Session == null)
{
return;
}
EntitiesModel dbContext =
HttpContext.Current.Session[CONTEXT_KEY] as EntitiesModel;
if (dbContext != null)
{
dbContext.Dispose();
}
}
private void ClearSession()
{
if (HttpContext.Current.Session == null)
{
HttpContext.Current.Session.Remove(CONTEXT_KEY);
}
}
}
}
答案 0 :(得分:2)
我相信您应该从, testbaza
代码中移除add
部分。
<configuration>
<system.web>
<httpModules>
<add name="MyModule" type="MyModule" />
</httpModules>
</system.web>
</configuration>
答案 1 :(得分:2)
好像你已经附加了一个无法找到的HTTP模块。你是如何创建这个项目的? 可以在web.config中删除该模块。
修改强>
你需要改变:
<httpModules>
<add name="ContextModule" type="testbaza.ContextModule, testbaza" />
</httpModules>
到
<httpModules>
<add name="ContextModule" type="testbaza.Models.ContextModule, testbaza" />
</httpModules>
注意更改的命名空间。