程序调试的时候运行正常,发布安装以后就不行了

phuai007 2010-10-20 08:25:54

//更新xml数据
private void button1_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
try
{
button1.Enabled = false;

ds.ReadXml(xmllist + @"/filelist.xml");
foreach (DataRow row in ds.Tables[0].Rows)
{
string s = row["name"].ToString();
DownFile(Application.StartupPath + @"\xml\" + s, xmllist + s, s);
}
label2.Text = "更新完成";
button1.Enabled = true;
treeView1.Nodes.Clear(); //更新后重新加载文件
fandxml();
}
catch
{
button1.Enabled = true;
label2.Text = "更新失败!";
MessageBox.Show("连接更新文件失败,请检查网络或稍后再试!", "连接失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}


这个地方是去网站上下载xml文件,在调试的时候一点问题没有,但是发布程序以后,我在本机安装测试,发现更新不了,一直提示更新失败,弹出那个失败对话框。网络应该是没问题的,不知道是哪里问题,请问要怎么跟踪调试以找出问题所在
...全文
271 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
z812183667 2010-10-20
  • 打赏
  • 举报
回复
是不是那个文件没有权限啊!
phuai007 2010-10-20
  • 打赏
  • 举报
回复
找到文件了,下载到这里了:

C:\Users\xiaoguai\AppData\Local\VirtualStore\Program Files\hbplayer\xml

这是我的下载函数,请问怎么修改才能让它下到程序安装目录里呢?

//更新xml数据
private void button1_Click(object sender, EventArgs e)
{
DataSet ds = new DataSet();
//try
//{
button1.Enabled = false;

ds.ReadXml(xmllist + @"/filelist.xml");
foreach (DataRow row in ds.Tables[0].Rows)
{
string s = row["name"].ToString();
DownFile(Application.StartupPath + @"\xml\" + s, xmllist + s, s);
}
label2.Text = "更新完成";
button1.Enabled = true;
treeView1.Nodes.Clear(); //更新后重新加载文件
fandxml();
//}
//catch
//{
//button1.Enabled = true;
//label2.Text = "更新失败!";
// MessageBox.Show("连接更新文件失败,请检查网络或稍后再试!", "连接失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
//}
}

///更下载文件
/// <param name="FilePath">本地路径</param>
/// <param name="StrUri">远程地址</param>
public void DownFile(string FilePath, string StrUri, string s)
{
File.Delete(FilePath);//先删后建立
System.Net.HttpWebRequest Myrq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(StrUri);
System.Net.HttpWebResponse myrp = (System.Net.HttpWebResponse)Myrq.GetResponse();
long totalBytes = myrp.ContentLength;
System.IO.Stream st = myrp.GetResponseStream();
System.IO.Stream so = new System.IO.FileStream(FilePath, System.IO.FileMode.Append, System.IO.FileAccess.Write, System.IO.FileShare.Write);
long totalDownloadedByte = 0;
byte[] by = new byte[1024];
int osize = st.Read(by, 0, (int)by.Length);
while (osize > 0)
{
totalDownloadedByte = osize + totalDownloadedByte;
Application.DoEvents();
so.Write(by, 0, osize);
osize = st.Read(by, 0, (int)by.Length);
}
so.Close();
st.Close();
label2.Text = "文件" + s + "下载中...";
}
haishenshizi 2010-10-20
  • 打赏
  • 举报
回复
文件路径问题,应该不是权限,一般发布的时候,和你自己添加的文件路径相悖
最好都放到资源文件内,就可以保证发布的时候文件同时发布出去
vip__888 2010-10-20
  • 打赏
  • 举报
回复
看看文件路径是否正确
phuai007 2010-10-20
  • 打赏
  • 举报
回复
晕,我把那个目录的3_lz.xml删除后运行正常了,但是下载回来的文件不在“hbplayer\xml\”里面,文件是下回来了的,不知道跑哪去了。
phuai007 2010-10-20
  • 打赏
  • 举报
回复
去掉了try,找到问题了

有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。

************** 异常文本 **************
System.UnauthorizedAccessException: 对路径“C:\Program Files\hbplayer\xml\3_lz.xml”的访问被拒绝。 在 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
在 System.IO.File.Delete(String path)
在 maxplayer.Form1.DownFile(String FilePath, String StrUri, String s)
在 maxplayer.Form1.button1_Click(Object sender, EventArgs e)
在 System.Windows.Forms.Control.OnClick(EventArgs e)
在 System.Windows.Forms.Button.OnClick(EventArgs e)
在 System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
在 System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
在 System.Windows.Forms.Control.WndProc(Message& m)
在 System.Windows.Forms.ButtonBase.WndProc(Message& m)
在 System.Windows.Forms.Button.WndProc(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
phuai007 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 weiaizoutianya11 的回复:]
xml文件的路径在本机和安装完后是不一样的。
类似 :System.Reflection.Assembly Asm = System.Reflection.Assembly.GetExecutingAssembly();
路径=new FileInfo(Asm.Location).Directory + "\filelist.xml";
[/Quote]

谢谢,大概知道是什么问题了,但还不是很明白。

程序是这样运行的:

先打开服务器上的一个xml文件(filelist.xml)读取其中内容,这个文件里有其他xml文件名字,读取到名字以后,调用文件下载函数将这个xml文件下回本地。
难道是下载路径出问题了吗?我把try去掉看看出什么错先
杨友山 2010-10-20
  • 打赏
  • 举报
回复
在debug下调试好,再转realease在调试
daichenghua 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 weiaizoutianya11 的回复:]
xml文件的路径在本机和安装完后是不一样的。
类似 :System.Reflection.Assembly Asm = System.Reflection.Assembly.GetExecutingAssembly();
路径=new FileInfo(Asm.Location).Directory + "\filelist.xml";
[/Quote]

支持
phuai007 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sito_hongta 的回复:]
把失敗內容寫到日誌,再去看看寫了什麼內容~
[/Quote]
请问如何写日志呢
weiaizoutianya11 2010-10-20
  • 打赏
  • 举报
回复
xml文件的路径在本机和安装完后是不一样的。
类似 :System.Reflection.Assembly Asm = System.Reflection.Assembly.GetExecutingAssembly();
路径=new FileInfo(Asm.Location).Directory + "\filelist.xml";
sito_hongta 2010-10-20
  • 打赏
  • 举报
回复
把失敗內容寫到日誌,再去看看寫了什麼內容~
内容概要:本文围绕“新型电力系统下多分布式电源接入配电网承载力评估方法”的研究,系统性地介绍了基于Matlab的仿真建模与代码实现方案,旨在评估高比例分布式电源(如光伏、风电等)接入背景下配电网的接纳能力。研究融合了智能优化算法(如蜣螂优化、灰狼优化、遗传算法)、多目标优化、鲁棒优化及双层优化模型,结合潮流计算、稳定性分析与故障仿真,构建了完整的承载力评估体系。文档不仅提供核心算法实现,还拓展至微电网调度、储能配置、电氢耦合系统、电动汽车协同等前沿方向,强调“复现+创新”相结合的科研路径,助力研究者快速掌握高水平论文复现技巧并激发原创思路。; 适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,正在从事科研或工程应用的研究生及初级科研人员(工作1-3年);; 使用场景及目标:①复现高水平期刊中关于配电网承载力的优化模型;②开展高比例可再生能源接入下的配电网规划与运行研究;③学习并应用智能优化算法解决复杂电力系统问题;④获取完整科研资源包以加速课题进展与论文撰写; 阅读建议:建议读者关注公众号“荔枝科研社”获取网盘资源,下载全套代码与模型文件,按照文档结构循序渐进学习,重点理解算法设计逻辑与仿真建模细节,结合所提供的复现案例深化对优化模型与工程应用场景的理解,提升科研效率与创新能力。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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