在IIS无法序列化的问题

kuangxiang007 2009-05-25 07:28:29
我的环境是xp + IIS5 + vs2008
我写了一个序列化的代码,一模一样的代码在winform中可以正常序列化和反序列化,但放在webform后就始终提示错误“生成 XML 文档时出错”
用户代码未处理 System.InvalidOperationException
Message="生成 XML 文档时出错。"
Source="System.Xml"
StackTrace:
在 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
在 System.Xml.Serialization.XmlSerializer.Serialize(Stream stream, Object o)
在 _Default.Button2_Click(Object sender, EventArgs e) 位置 f:\dotnetWeb\ExpOffice\web\Default.aspx.cs:行号 82
在 System.Web.UI.WebControls.Button.OnClick(EventArgs e)
在 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)
在 System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
在 System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
在 System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
在 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException: System.InvalidCastException
Message="无法将类型为“CsData”的对象强制转换为类型“CsData”。"
Source="6w2wnbkp"
StackTrace:
在 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterCsData.Write3_CsData(Object o)
InnerException:


我查了一下资料似乎是使用到window/temp目录而引起的权限问题,但我把该目录的权限开发到everyone的完全控制,错误依然,请问怎么解决,麻烦知道的指点一下,谢谢
...全文
270 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
glboy12 2009-05-27
  • 打赏
  • 举报
回复
ding
gongsun 2009-05-27
  • 打赏
  • 举报
回复
...
kuangxiang007 2009-05-27
  • 打赏
  • 举报
回复
问题解决了,问题是这样的,我是用反射动态生成一个对象,然后再把它序列化,至于为什么这样做我就不说原因了,如果这个来源的dll文件不在bin目录下就没问题,但我不能不把它放到bin目录,尝试了很久才发现把原先的Assembly.LoadFile改成Assembly.LoadFrom就没这个错误了,我搞不明白它们的差别会解决该错误,反正就这样不明不白的解决了

虽然大家的回复对我解决问题没有帮助,但Roc_Lee 提供的连接还是让我收益不少,分就主要给他好了,谢谢

春天的气息 2009-05-26
  • 打赏
  • 举报
回复
一般都是无法写入temp文件夹造成的,再检一下权限吧,asp.net的用户也开放更多权限试试,
springbell 2009-05-26
  • 打赏
  • 举报
回复
真的没遇到过你说的问题,帮顶
kuangxiang007 2009-05-26
  • 打赏
  • 举报
回复
不会吧,难道这个问题就只有我碰到,难道大家都没用序列化吗?居然没有一个人有提供点意见

TO qingniaoIT:
我不是不会写序列化的代码,是执行时出现莫名错误,我不知你有没有在WebForm中执行过,有没有遇到我说的问题
kuangxiang007 2009-05-26
  • 打赏
  • 举报
回复
我把temp目录开放给everyones完全控制的权限,同时把aspnet和IIS的两个帐号都加入到administrators的群组中,错误依然,都快崩溃了
mengxj85 2009-05-25
  • 打赏
  • 举报
回复
UP
qingniaoIT 2009-05-25
  • 打赏
  • 举报
回复

using System.IO;
using System.Xml.Serialization;

/// <summary>
/// 序列化
/// </summary>
/// <typeparam name="T">待序列化对象的类型</typeparam>
/// <param name="obj">待序列化对象</param>
/// <param name="fileName">文件路径名</param>
/// <returns></returns>
public static bool Serialize<T>(T obj, string fileName)
{
bool bl = false;
if (!Directory.Exists(Path.GetDirectoryName(fileName)))
Directory.CreateDirectory(Path.GetDirectoryName(fileName));
if (File.Exists(fileName))
File.Delete(fileName);
XmlSerializer mySerializer = new XmlSerializer(typeof(T));
using (StreamWriter sw = new StreamWriter(fileName))
{
try
{
mySerializer.Serialize(sw, obj);
bl = true;
}
catch {
//log process
}
}
return bl;
}

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧