最近公司拓展市场异常迅猛,数周之类开出去几十套系统,虽然系统名字不一样,但各个内容相似。由于时间紧迫,很多开出去的系统
出现各种神奇的错误,当初虽然有记录错误日志,然而很多客户使用的是自己的服务器和数据库,出了问题我们并不能立即掌握信息,
因此决定做一个捕获所有系统的异常并保存到自家数据库中。
实现思路
在每个系统出写入报告错误代码(找个合理的理由,比如系统免费升级) -> 自家服务器接收并处理错误报告 -> 反馈用户(解决掉BUG就行,不要太声扬)
基础回顾
---参考msdn
1.HttpWebRequest类:提供WebRequest类的Http特定的实现。
HttpWebRequest 类对 WebRequest 中定义的属性和方法提供支持,也对使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持。
不要使用构造函数创建HttpWebRequest实例,请使用System.Net.WebRequest.Create(URI uriString)来创建实例,如果URI是Http://或Https://,
返回的是HttpWebRequest对象。(建立请求特定URI的对象)
当向资源发送数据时,GetRequestStream方法返回用于发送数据的Stream对象。(获取请求数据的流对象)
GetResponse方法向RequestUri属性指定的资源发出同步请求并返回包含该响应的HttpWebResponse。(获取来自internet的响应)
实例讲解
1.远程请求并返回响应
复制代码 代码如下:
/// <summary>
/// 报告系统错误
/// </summary>
/// <param name="ex"></param>
/// <returns></returns>
public static string Sys_ReportError(Exception ex)
{
try
{
//要提交表单的URI字符串
string uriString = "http://localhost/Sys_ReportError.aspx";
HttpContext context = HttpContext.Current;
if (context == null) return string.Empty;
string targetSite = ex.TargetSite.ToString();
string stackTrace = ex.StackTrace;
string friendlyMsg = ex.Message;
string errorPage = context == null || context.Request == null ? "" : context.Request.Url.ToString();
string projectName = Config.Sys_Title();
//要提交的字符串数据
string postString = "targetSite=" + HttpUtility.UrlEncode(targetSite);
postString += "&stackTrace=" + HttpUtility.UrlEncode(stackTrace);
postString += "&friendlyMsg=" + HttpUtility.UrlEncode(friendlyMsg);
postString += "&errorPage=" + HttpUtility.UrlEncode(errorPage);
postString += "&projectName=" + HttpUtility.UrlEncode(projectName);
postString += "&key=" + "";
HttpWebRequest webRequest = null;
StreamWriter requestWriter = null;
string responseData = "";
webRequest = System.Net.WebRequest.Create(uriString) as HttpWebRequest;
webRequest.Method = "POST";
webRequest.ServicePoint.Expect100Continue = false;
webRequest.Timeout = 1000 * 60;
webRequest.ContentType = "application/x-www-form-urlencoded";
//POST the data.
requestWriter = new StreamWriter(webRequest.GetRequestStream());
try
{
requestWriter.Write(postString);
}
catch (Exception ex2)
{
return "连接错误";
}
finally
{
requestWriter.Close();
requestWriter = null;
}
responseData = WebResponseGet(webRequest);
webRequest = null;
return responseData;
}
catch
{
return "未知错误";
}
}
复制代码 代码如下:
/// <summary>
/// Process the web response.
/// </summary>
/// <param name="webRequest">The request object.</param>
/// <returns>The response data.</returns>
public static string WebResponseGet(HttpWebRequest webRequest)
{
StreamReader responseReader = null;
string responseData = "";
try
{
responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
responseData = responseReader.ReadToEnd();
}
catch
{
return "连接错误";
}
finally
{
webRequest.GetResponse().GetResponseStream().Close();
responseReader.Close();
responseReader = null;
}
return responseData;
}
2.远程服务器读取流
复制代码 代码如下:
_context = HttpContext.Current;
Stream stream = _context.Request.InputStream; //获取当前传入Http输入流
long length = stream.Length;
byte[] data = _context.Request.BinaryRead((int)length);//对当前输入流进行指定字节数的二进制读取
string strContent = Encoding.UTF8.GetString(data);//解码为UTF8编码形式的字符串
代码讲解到此结束,一些相关补充:
1.HttpWebRequest对象有一些相关设置属性,如Method(发送方式),TimeOut(请求超时时间),ContentType(Http标头的值)等等。
2.若远程接收页面出错,该如何调试,很简单,只需写入下面的代码:
复制代码 代码如下:
HttpWebResponse res = null;
WebResponse response = null;
try
{
WebResponse response = webRequest.GetResponse();
}
catch (WebException ex1)
{
res = (HttpWebResponse)ex1.Response;
}
finally
{
StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.UTF8);
string strhtml = sr.ReadToEnd();
HttpContext.Current.Response.Write(strhtml);
}
当获取服务器响应出错时,捕捉错误,最终打印出错误即可。
相关推荐:
ChatGPT点不了?背后的真相与解决方法,ai.520523
智能AI写作生成:如何借助人工智能提升创作效率与质量
SEO深度解析:如何通过深度优化提升网站排名,带来流量和转化,咸宁网站建设大概费用
SEO这种营销方式,改变你网站流量的秘密武器,佛山网站设计建设
内容创作新时代:自动生成文章的AI如何改变写作生态
SEO导流:如何通过精准优化实现网站流量大爆发,网站优化优化怎么做
GPT-3.5免费吗?揭秘AI智能助手的未来与收费模式,ai 美美
《*采集站:带你领略全球最全*资源的宝藏平台》,seo优化易下拉瞧瞧
SEO调整,助力网站流量爆发式增长!,江都seo优化排名
为什么做抖音seo,为什么做抖音推广 ,描边ai虚线
为什么“360收录”是你网站推广的必备利器,seo亚马逊
SEO很多,如何在竞争激烈的市场中脱颖而出?,在SEO优化中
ChatGPT无法加载?检查网络并尝试重启,助您快速恢复畅通体验,burj ai
什么是seo行业,seo是什么职业做什么的 ,ai标题字体效果
SEO教你如何快速提升网站排名,打破竞争壁垒!,本溪seo优化排名公司
ChatGPT翻译打不开?解决方法!,ai爱股票
什么是蜘蛛弛?揭秘这个SEO优化背后的神秘工具,南沙seo优化排名价格
AI免费生成文章让创作变得轻松自如
SEO就业前景如何?打造数字时代的职业新风口,常州武进区水产网站建设
AI免费生成文章的软件:轻松创作的秘密武器
SEO赚钱:如何通过SEO技能在网络上实现财富自由,网站怎么建设推广平台
AI网站开发与代码创新:引领未来数字化变革的关键,ai ay规则
SEO快速优化排名:助你网站跃升搜索引擎首页,ai彩虹立体9怎么做
seO经理是什么岗位,seo经理招聘 ,ai写作重复被查
SEO基础知识解析:如何提升网站排名,助力企业成长,毕节企业建设网站
ChatGPT不能打开EL?揭秘这一困扰背后的真相与解决方案,ai被动房
SEO模块:提升网站排名,驾驭数字营销未来,营口网站建设制作平台
中国AI软实力崛起:技术创新与产业应用的完美融合,seo0066
什么是seo长尾词,什么是seo长尾词的概念 ,绿茶ai换脸杨超越
什么是seo伪原创,seo就业前景伪原创怎么写 ,头像ai画怎么弄
SEO发明:引领数字时代营销革命的力量,速卖通外贸推广网站
ChatGPT服务部分恢复:人工智能助力全新体验,ai对象菜单
SEO优化全攻略提升网站排名的关键步骤与未来趋势,这是什么新晋动画ai
ChatGPT出现报错503?这些解决办法你必须知道!,粉墨ai说唱
AI人工智能:改变未来的科技革命
文章疑似AI生成怎么办?如何辨别并应对AI生成文章的挑战
ChatGPT页面空白不乏登录:让你秒变职场高手与生活智囊,百度ai 腾讯ai
seo相当于什么职业,seo相当于什么职业类别 ,usatisfy ai
软件AI:颠覆未来的智能革命
AI缩写文档:革新文档管理与自动化的未来,ai聊天中文
怎么使用AI生成文章,轻松提升写作效率!
ChatGPT破解:让AI打破语言与思维的边界,ai模板vis
ChatGPT崩了?用户称打开是一片空白,真相竟然如此!,zzz*明星AI换脸
SEO教研:数字营销新趋势,提升网站流量与转化率的关键,齐鲁证券网站建设
seo,seoul city ,ai精洗
seo逻辑是什么,seo思路 ,语音主播怎么ai写作业
SEO主要是为网站引流吗?深入解析SEO的核心价值,AI算算
SEO关键词利器:如何借助精准关键词提升网站流量与排名,ai绘画客户
ChatGPT发生故障,背后隐藏着哪些不为人知的原因与挑战?,硬件ai和软件ai
GPT人工智能-让未来触手可及的智慧之光,ai头花写真