【发布时间】:2012-10-14 00:36:36
【问题描述】:
我有一个托管在某处 (webhostingworld.net) 的应用程序,但我遇到了难题。我有一个执行一些离线操作的工具(.net 4 anycpu 中的简单普通 exe),它由“Parallel Plesk Panel 11.0.9”作为“计划任务”启动。一切都很顺利,直到我添加了一个通用方法。
- 基本上,它只是一个从数据库中读取 json 字符串并返回的虚拟方法;
- 进程刚刚结束,没有抛出异常 - 我不得不将日志记录从一个地方转移到另一个地方,我做的最后一件事是在调用此方法和其中的第一件事之前放置日志记录。调用这个方法之前的日志是有的,方法里面的日志是没有的;
- 方法声明如下所示:
public T Get<T>(string id);
- 我联系他们寻求一些反馈 - 也许他们在系统日志中看到了一些东西,但我怀疑他们会带来一些启示;
- 在我的电脑上工作正常(不总是这样吗?);
- 尝试编译所有 cpu 风格:x86、x64、anyCPU 并具有相同的行为...
我没有主意了。我总是可以尝试使用通用对象(从代码大小 pov 来看,这可能是一个更好的想法 - 但这是另一个主题)......但这非常令人沮丧,因为我无法找到发生这种情况的充分理由... 那么,对发生了什么有任何想法吗?
谢谢!
更新:代码如下:
public T Get<T>(string id)
{
Log.Debug("mary still has that little lamb");
string jsonString = GetASimpleStringFromDatabase(id); // id has values like "ID", "TEMPPATH", "MAIL", etc;
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
return ser.ReadObject(ms);
}
}
调用看起来像这样:
Log.Debug("Let's check if Mary has that little lamb");
MyClass c = deserializer.Get<MyClass>(stuff);
第一个记录语句出现(“让我们检查一下”),第二个(“仍然有”)没有。 .net 框架与我机器上的框架相同(至少在版本方面)。我想知道是否有一些我需要检查的标志,什么...
更新:很抱歉,支持人员的反应很慢。我对此没有答案。我将不使用“模板”。 :-(
【问题讨论】:
-
你能贴出
public T Get<T>(string id)的代码和调用它的代码行吗? -
安装在应用程序运行的机器上的.Net框架是什么? Framework 1.0/1.1 不支持泛型
-
这是.NET 4 -
simple plain exe in .net 4 anycpu -
您可能正在谈论您的机器配置。我在询问机器应用程序上的 .net 环境配置正在运行和失败。
-
在您发布的 Get 方法中,您的代码不止一处有问题。请修复,如果
i是一个错字并且在返回反序列化值时缺少演员表。还有,id有什么用?而jsonString是从哪里来的?