我在vs2010中有一个包含3个项目的解决方案 - Business Objects, API, 网络应用程序。
Business Objects使用原始ADO从SQLServer填充,并使用CSLA在各个层上进行序列化。 Web App和API都有对Business Objects的项目引用。
一个特定的业务对象包含一个Guid,从ADO填充到私有字段,并通过公共getter访问,即只读。当我通过网络应用程序使用它时,它可以正常工作,当我通过api访问它并尝试做任何事情时总是填充值00000000-0260-0251-6002-510200000000
。
调试服务调用显示属性正确填充了我期望从db中获得的值(悬停在属性上,使用即时窗口,quickwatch等)但是如果我尝试将此guid分配给另一个变量或将其作为参数转换为另一种方法,传递或赋值始终变为00000000-0260-0251-6002-510200000000
。
业务对象上的所有其他guid(有很多)工作正常,它们都以相同的方式被检索和访问。无论我加载哪个对象,甚至连接到哪个数据库,这一个总线对象上的这一个属性总是分配这个值。
这是Dev&调试模式,它不是调试器混淆。我甚至在我们的TFS构建服务器上构建它,并将生成的API dll部署在单独的应用程序服务器上。同样的结果,因此它与在我的开发机器上专门构建或运行无关。
我在各种Guid构造函数中解析了字符串和字节数组。结果相同。我已经进入了MSIL并且分配guid的调用看起来与分配Guid的其他所有调用相同。没什么不寻常的。从db调试业务对象加载看起来很好,正如我所说的,值是我期望的,直到我尝试用它做一些事情。该属性非常简单 - 只需返回_privateField,无需特殊处理或任何其他操作。它通过网络应用程序工作正常,他们指向相同的DLL!
谷歌搜索“00000000-0260-0251-6002-510200000000
”没有任何结果 - 它似乎没有任何特殊含义。
在我的智慧结束时,我想不出更多的选择。任何人都可以想到这里可能会发生什么,或者00000000-0260-0251-6002-510200000000
对任何人都有意义吗?