【问题标题】:XMLSerializer error on compile编译时的 XMLSerializer 错误
【发布时间】:2013-05-20 13:57:50
【问题描述】:

我会切入正题,给你一些背景信息:我们的应用程序有相当大的启动问题,我们的网络服务最多需要 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 Web 服务方面不是很有经验。

【问题讨论】:

    标签: c# asp.net web-services xml-serialization


    【解决方案1】:

    很好,现在我其实有了一些答案,所以我们开始吧:

    至于 Sgen.exe 引发的错误,最好的解决方法是不通过 Visual Studio IDE 运行它,而只需导航到我的服务器所在的文件夹。我一开始并没有这样做,因为直接运行 Sgen.exe 会给我带来更多错误 - 原来我的硬盘上安装了两个版本的 Sgen。它们自带两个 Visual Studio 安装。

    现在对于错误本身,问题是有两个相同枚举名称的实例,就这么简单。

    【讨论】:

      猜你喜欢
      • 2016-04-21
      • 2023-03-20
      • 2010-10-15
      • 2013-05-18
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多