我将切入追逐并向您提供一些背景信息:我们的应用程序存在相当大的启动问题,我们的Web服务最多需要20(!!)秒来响应第一个请求。在这个初始滞后之后,一切都运行得非常快,但最初的延迟本身就是一个很大的问题。
无论如何,我在过去两天左右的时间里一直在研究这个问题,我已经设法得到了来回发送请求的正确日志,结果证明问题在于创建XMLSerializer,这很简单,需要很长时间。
现在经过更多的谷歌搜索,我发现了'生成序列化程序集'属性,并且它不能正常工作。为了强制序列化,我在这里遵循了这个解决方案: https://stackoverflow.com/a/8798289/2401855
现在已经有效了,除了......好吧,它没有。当我尝试编译Web服务时,Sgen抛出'有一个错误反映类型'错误,我无法继续。最后,我的问题来了:
如何获取Sgen.exe引发的实际错误?它可能只是帮助我理解正在发生的事情,但我试图查看codeproject所指的系统日志文件并且找不到任何东西。
为什么首先会抛出错误?它会被抛出这段特殊的代码:
public class Enums
{
public enum TypNakladu
{
Prijmy = 1,
Vydaje = 2
}
public static string GetEnumDescription(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
DescriptionAttribute[] attributes =
(DescriptionAttribute[])fi.GetCustomAttributes(
typeof(DescriptionAttribute),
false);
if (attributes != null &&
attributes.Length > 0)
return attributes[0].Description;
else
return value.ToString();
}
}
'TypNakladu'是sgen似乎不喜欢的枚举。有没有办法让sgen忽略这个特定的类或包含在其中的枚举? (还有更多,但当我发表评论时,sgen只是抱怨下一个)
我认为这就是它。如果我在这里犯了一些令人难以置信的愚蠢错误,我很抱歉,在ASP.NET网络服务方面我不是很有经验。
答案 0 :(得分:1)
很好,现在我真的有了一些答案,所以我们走了:
至于Sgen.exe抛出的错误,最好的方法是不通过Visual Studio IDE运行它,只是导航到我的服务器的文件夹。我没有在第一时间做到这一点,因为直接运行Sgen.exe会给我带来更多错误 - 结果我在我的硬盘上安装了两个版本的Sgen。它们本身就有两个Visual Studio安装。
现在对于错误本身,问题是有两个相同枚举名称的实例,就这么简单。