2

新的 Xamarin Studio 有很多值得喜欢的地方,但是每次运行我的 Web 项目时,我都会遇到 System.Security.SecurityException - 无法访问给定的密钥。

如果我继续执行并在 Safari 中刷新页面,则该站点可以正常工作。这只是网站第一次加载。

它在反汇编程序中停止:

0000001d   call Void System.Web.WebPages.WebPageHttpHandler:RegisterExtension (String)
00000022   ldc.i4.0 
00000023   call Void System.Web.UI.PageParser:set_EnableLongStringsAsResources (Boolean)
>00000028   ldtoken System.Web.WebPages.WebPageHttpModule
0000002d   call Type System.Type:GetTypeFromHandle (RuntimeTypeHandle)
00000032   call Void  Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility:RegisterModule (Type)
00000037   newobj Void System.Web.WebPages.Scope.AspNetRequestScopeStorageProvider:.ctor ()
0000003c   call Void System.Web.WebPages.Scope.ScopeStorage:set_CurrentProvider (IScopeStorageProvider)
00000041   ret 

这似乎是一个竞争条件。它是在完成所有编译之前启动网站吗?

为了测试我添加了一个 Before Execute 任务,sleep '8s'它不会立即发生,而是在下次选择链接时发生。基本上是第一次加载网站。

我可以编译代码并在 Ubuntu 上运行它。有任何想法吗?

其他一些环境数据:

  • OS-X 山狮
  • .Net 4.0
  • 项目使用 ServiceStack.Net
  • MVC 3.0
4

1 回答 1

1

如果其他人发现同样的问题,只是让您知道在我执行以下操作后问题已经消失(出于其他原因)

  1. 从源代码控制 (GitHub) 中删除了已编译的二进制文件并添加了一个 .gitignore 文件。
  2. 在 VS 2012 中打开解决方案 - 首先必须从网站 .csproj 中注释掉“Imports ...web.targets”,因为这些不在我的 Windows 机器上并阻止项目加载。
  3. 在 Xamarin Studio 中打开解决方案并删除了 VS 2012 自动添加的引用,例如 .Web.Helpers 和 .Web.Entity 以及它注入到 web.config 中的其他引用。

Xamarin Studio 现在在加载程序集时使用调试器启动网站的速度较慢,每个都需要一秒钟 - Loaded assembly: data-0x1d9ac00 [External]等等但没有错误:)

所以可能是 Git 对子项目中的二进制文件做了一些事情,或者这次我碰巧正确删除了一个错误的 DLL 引用。

于 2013-04-11T00:23:41.720 回答