.net - 定期 - 无法将索引 Y 处的 Unicode 字符 X 转换为指定的代码页

在我们的生产站点(这是一个 .net 4 托管的 WCF 应用程序)中,我们对我们的产品进行了升级,现在是 .net 4(之前是 .net 3.5)。这是一个拥有超过 20 万注册用户的大型产品。此问题是随机发生的,执行 iisreset 后会消失。

我在网上找到了一些网页,但没有解决这个问题。

我们看到以下错误:

System.Text.EncoderFallbackException: Unable to translate Unicode character \uD83D at index -1 to specified code page.
  at System.Text.EncoderExceptionFallbackBuffer.Fallback(Char charUnknown, Int32 index)
  at System.Text.EncoderFallbackBuffer.InternalFallback(Char ch, Char*& chars)
  at System.Text.UTF8Encoding.GetBytes(Char* chars, Int32 charCount, Byte* bytes, Int32 byteCount, EncoderNLS baseEncoder)
  at System.Text.EncoderNLS.GetBytes(Char[] chars, Int32 charIndex, Int32 charCount, Byte[] bytes, Int32 byteIndex, Boolean flush)
  at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)
  at System.IO.StreamWriter.Write(Char[] buffer, Int32 index, Int32 count)
  at System.IO.TextWriter.WriteLine(String value)
  at System.IO.TextWriter.SyncTextWriter.WriteLine(String value)
  at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\AdoNet\AbstractBatcher.cs:line 239
  at NHibernate.Driver.BatcherDataReaderWrapper..ctor(IBatcher batcher, IDbCommand command) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Driver\BasicResultSetsCommand.cs:line 99
  at NHibernate.Driver.BasicResultSetsCommand.GetReader(Nullable`1 commandTimeout) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Driver\BasicResultSetsCommand.cs:line 54
  at NHibernate.Impl.MultiCriteriaImpl.GetResultsFromDatabase(IList results) in d:\CSharp\NH\NH\nhibernate\src\NHibernate\Impl\MultiCriteriaImpl.cs:line 199
2013-08-26 22:52:56,333 [87] *ERROR* NHibernate.Util.ADOExceptionReporter.LogExceptions() -> Unable to translate Unicode character \uD83D at index -1 to specified code page.

这似乎发生在 NHibernate 和数据库之间的连接中。 目前我们只是在每次发生这种情况时重置服务器。我将不胜感激,因为我们在这里对这个问题感到困惑。

最佳答案

尝试在您的 web.config 中将“show_sql”标志设置为 false,并将休眠日志设置为不同于调试的日志。

Thw 问题是当休眠尝试记录命令但它在记录某些 UTF16 字符(如某些表情符号)时失败。 当 show_sql 设置为 tru 时,它还会将 thw kog 写入 srdout,这也可能导致失败。

https://stackoverflow.com/questions/18504196/

相关文章:

hadoop - 以 hdfs 作为接收器的水槽中的 NoSuchMethod 错误

ssis - Camel 与 ETL 工具

r - 在 R : legend and lines 中用线密度代替颜色绘制 map

php - 使用 preg_replace 使序号全部小写

ruby-on-rails - 如何使用 nginx 作为代理将 redmine 移动到子 URI

c# - RestSharp - 找不到

php - 在 PHPUnit 中测试工作链接

google-cloud-storage - 将大文件上传到谷歌云存储时超时

apache - 带加号的 URL 重定向

shell - 查找两个文件之间有多少行不同