在我们的生产站点(这是一个 .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 和 DB 之间的连接中。目前我们只在每次发生这种情况时重置服务器。我将不胜感激任何帮助,因为我们在这里对这个问题感到困惑。