我在Win2008R2机器上安装了全新的VS2010
调试WCF服务项目时,我开始收到此错误:
“尝试读取或写入受保护的 记忆。这通常是一个迹象 其他记忆已经腐败。“
当我一周后开始开发网站时,这变得一致 - 我无法调试它。 堆栈转储读取:
在 Microsoft.VisualStudio.WebHost.Host.ProcessRequest(连接 conn)at Microsoft.VisualStudio.WebHost.Server.OnSocketAccept(对象 在...接受 System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(对象 国家) System.Threading.ExecutionContext.Run(执行上下文 executionContext,ContextCallback 回调,对象状态,布尔值 ignoreSyncCtx)at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 在 System.Threading.ThreadPoolWorkQueue.Dispatch() 在 System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
我尝试在线搜索,有些人建议关闭调试选项中的“抑制JIT优化” - 这似乎没什么区别。
显然问题在于内置的Web服务器。但我做错了吗?有什么我可以做的吗?或者这是一个已知的错误?
感谢您的时间,
盖
更新12/31 :今天我尝试使用CassiniDev替代原始VS2010 WebServer - 完全相同的结果。我怀疑VS2010,Windows Server 2008R2之间存在一些内部冲突,可能是64位操作系统。我转而使用IIS作为我的调试服务器 - 这似乎有效,有一些恼人的副作用。
我的结论:不要将64位服务器系统用作开发机器。开发32位 - 部署到64位。
侧面结论:有些情况微软的QA没有测试。
答案 0 :(得分:2)
嗯,这是一个可悲的事实,我和那些为微软工作的人验证了这些技术。我刚刚触发了某种卡西尼虫。他建议我尝试安装VS2010 SP1 beta(由于我的代码是在生产中,我不能这样做)。他的另一个建议是尝试IIS Express。 MS正试图将人们转移到IIS Express并将其作为其Web平台安装程序的一部分提供 - 因此,他们不会花费太多时间来插入Cassini错误。
由于我使用的是2008服务器,我刚刚添加了IIS(花了不到一分钟),创建了一个虚拟目录(VS项目页面允许你点击一键完成它)我现在已成功调试IIS。不是我想要的结果,但你不能总是得到你想要的东西:)
答案 1 :(得分:0)
安装.Net Framework 3.5为我解决了这个问题。
希望有所帮助!对不起,我无法提供任何关于卡西尼究竟出了什么问题的额外见解,但我怀疑它错过了一两个图书馆。
====
更新: 似乎有帮助(第一次请求不再崩溃),但在进一步使用时,我遇到了另一个出现相同错误的地方。)
====
更新: 而现在我再也无法重新创造了它。祝您好运,如果您再发现,请发布!
答案 2 :(得分:0)
引起我注意的是Win2008R2和Cassini。
我只是在猜测,但这让我觉得它可能是一个许可问题。
您的Win2008R2机器是否可能比普通开发者机器(普通开发者机器为XP / Vista / Win7等)锁定得更多。
在Win2008R2上使用您的用户帐户启动时,Cassini可能没有足够的权限来执行此操作。也许它无法打开端口?但我不认为端口问题会导致崩溃。或者它可能无法访问它需要的临时目录?
也许您的用户帐户被拒绝调试本地安全策略的权限?但我不是管理员,所以我不确定。
也许尝试以管理员身份启动visual studio(只是为了帮助您调查问题)。
或者尝试启动您的站点而不进行调试,以帮助查看调试过程是否存在某种权限问题。
我遇到过这个问题,从前段时间开始谈论Windows 7和Cassini。 http://msmvps.com/blogs/rfennell/archive/2009/01/24/problem-hosting-wcf-using-cassini-on-windows-7.aspx但它可能没有修复。