请教WinForm通过HttpWebRequest调用远程地址报403错误

jasonlee0927 2015-07-07 04:49:57
我在WinForm里要通过HttpWebRequest请求服务器Web站点上的一个xml配置文件,HttpWebRequest第一次请求的时候没有问题,能正常请求,但是再次请求的时候就报异常:远程服务器返回错误:(403)已禁止。而且断点调试都断不到,运行就直接报异常了,都不会进HttpWebRequest请求里面。

/// <summary>
/// 检查是否有自动更新
/// </summary>
private void CheckUpgrade()
{
bool canUpgrade = false;
worker = new BackgroundWorker();
worker.DoWork +=worker_DoWork;
worker.RunWorkerCompleted+=worker_RunWorkerCompleted;
DateTime now = DateTime.Now;
TimeSpan ts = now.Subtract(UpgradeConfig.LastUpgradeTime);
if (ts.Days == UpgradeConfig.UpgradeInterval)
{
canUpgrade = true;
}
if (canUpgrade)
{
worker.RunWorkerAsync();
}
}

private void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if (e.Error != null)
{
MessageBox.Show("检查软件版本更新异常!" + e.Error.Message); //报异常是这里
return;
}
if (hasNewVersion)
{
if (MessageBox.Show("检测到新版本,请更新!", "更新提示", MessageBoxButtons.OK) == DialogResult.OK)
{
string startupPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
Process.Start(System.IO.Path.Combine(startupPath, "T3FX.Upgrade.exe"));
worker.Dispose();
Application.Exit();
}
}
}

private void worker_DoWork(object sender, DoWorkEventArgs e)
{
try
{
string url = "http://192.168.1.250/upgrade/rms/upgrade.xml";// UpgradeConfig.UpgradeServer + @"/upgrade.xml";
string localPath = Application.StartupPath + @"\upgrade.xml";
UpgradeFileConfig upgradeFiles = null;
HttpWebRequest webRequest = HttpWebRequest.Create(url) as HttpWebRequest;
webRequest.Method = "GET";
webRequest.Timeout = 1000 * 20;
webRequest.ContentType = "application/xml";
webRequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
webRequest.UserAgent = "Code Sample Web Client";
HttpWebResponse webResponse = webRequest.GetResponse() as HttpWebResponse;

using (Stream stream = webResponse.GetResponseStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(UpgradeFileConfig));
upgradeFiles = serializer.Deserialize(stream) as UpgradeFileConfig;
if (upgradeFiles != null)
{
if (!upgradeFiles.VersionNo.Equals(UpgradeConfig.VersionNo))
{
hasNewVersion = true;
}
}
webResponse.Close();
}
if (upgradeFiles != null)
{
XmlSerializer serializerTo = new XmlSerializer(typeof(UpgradeFileConfig));
using (Stream stream = new FileStream(localPath, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite))
{
serializerTo.Serialize(stream, upgradeFiles);
}
}
}
catch (Exception ex)
{
MessageBox.Show("下载更新配置文件异常!" + ex.Message);
}
}
...全文
216 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jasonlee0927 2015-07-08
  • 打赏
  • 举报
回复
引用 3 楼 cai3725 的回复:
1、你调的地址手动访问看看有无问题 2、ispostback?
我在浏览器里访问调用地址:http://192.168.1.250/upgrade/rms/upgrade.xml都没问题啊 只是在WinForm里面通过HttpWebRequest调用的时候,第一次yo哪个HttpWebRequest访问没有问题,第二次就报服务器返回错误:403已禁止
正宗熊猫哥 2015-07-07
  • 打赏
  • 举报
回复
1、你调的地址手动访问看看有无问题 2、ispostback?
jasonlee0927 2015-07-07
  • 打赏
  • 举报
回复
引用 1 楼 Forty2 的回复:
你贴的是客户的代码。 而‘出错’方是服务器,是服务器返回了403。你试试调查一下服务方的代码。
服务方没有任何代码啊,我就在服务器的IIS上建了一个站点,里面放了一个xml配置文件(http://192.168.1.250/upgrade/rms/upgrade.xml)。然后我在winform窗体里面用HttpWebRequest去请求这个xml文件而已。
Forty2 2015-07-07
  • 打赏
  • 举报
回复
你贴的是客户的代码。 而‘出错’方是服务器,是服务器返回了403。你试试调查一下服务方的代码。

111,094

社区成员

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

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

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