【问题标题】:Does myAssembly.xmlSerializer.dll always get generated?myAssembly.xmlSerializer.dll 是否总是生成?
【发布时间】:2009-12-10 10:34:11
【问题描述】:

我有一个不使用任何 xml 属性进行序列化的 Web 服务。我只是从 Web 服务返回一个字符串。在这种情况下,是否会创建序列化 dll?

我问的原因是我每隔几周就会看到 c:\windows\temp\xxxxx.dll(其中 xxxxx 是随机字符序列),Web 服务正在运行。一种解决方案是使用 sgen.exe 进行预编译,这可能会解决问题。

另外,我看到一个链接说只对客户端库执行此操作,但此错误出现在 Web 服务端(服务器端),所以我仍然可以使用 sgen.exe 吗?

京东

【问题讨论】:

    标签: c# .net web-services iis


    【解决方案1】:

    每次调用XmlSerializer 构造函数时,它都会检查您尝试序列化的类型并生成一个临时程序集。如果程序集已经存在,它将重用它。因此,如果您的 Web 服务是经典的 ASMX 服务,它将在每个请求上使用 XmlSerializer,无论返回类型如何。这些临时程序集是序列化过程的一部分,我认为您不必太担心它们。

    【讨论】:

    • 谢谢达林。那么sgen.exe会不会帮助避免错误呢?我正在考虑将应用程序池回收期从默认的 29 小时更改为大约 15 小时,看看是否有任何效果。
    • @JD,你说你在 temp 文件夹中看到了所有这些临时程序集,但你没有提到任何错误?
    • @Darin:几周后,每个 Web 服务都会生成错误“System.Web.Services.Protocols.SoapException:服务器无法处理请求。---> System.IO.FileNotFoundException : 找不到文件 'c:\windows\Temp\xxxxxx.dll'",其中 xxxxx 在每个请求中都会发生变化。我不久前发布了这个:stackoverflow.com/questions/1682425/…
    • @Darin:您说过每个请求都会调用 xmlSerializer。我以为它只在第一个请求时完成,然后被缓存了?
    • XmlSerializer 在每个请求上都会被实例化,但它会重用先前请求中生成的临时程序集。
    猜你喜欢
    • 2013-12-22
    • 2015-11-23
    • 1970-01-01
    • 2018-02-11
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    相关资源
    最近更新 更多