问题还没解决,整理下再问,不懂的也请帮顶散分,谢谢。

李睿_Lee 2013-07-11 04:04:55
前几天发了一个提问帖:http://bbs.csdn.net/topics/390512921
不知道是我表达有问题,还是怎么的,貌似回答的都不在点上。我整理下我的问题,请各位指教。如果有细节描述不详细的而不好作答,请与我沟通。
详情如下:
公司有一个Web解决方案,用的是工厂模式,专门写了个项目用Routing来控制URL,业务逻辑为:网址经过解析找到相应的模板,根据模板里的标签数据相应的数据并显示出来,当网址经过解析找不到可用的模板时则抛出异常,捕获异常后读取404页面模板,并输出“找不到文件”的自定义提示信息,而不是跳转到类似error.aspx的自定义错误页面。
相关代码片断:

//根据URL获取模板文件fulltemplateFilename,因为文件不存在,所以读取模板文件的操作就会出错,获取异常,继续查找默认模板文件夹里的模板文件,不存在,也没有读取到,于是调用MessageException来输出错误提示
try
{
sr = new System.IO.StreamReader(fulltemplateFilename, System.Text.Encoding.UTF8);
content = sr.ReadToEnd();
}
catch (Exception ex)
{
if (sr == null)
{
#region 调用系统默认模板
string DefaultTemplateFilename = System.Web.HttpContext.Current.Server.MapPath(FullFileName.Replace(this.Website.CallbackUrl, "/Template/Default/V0.1/"));
dependencyList.Add(DefaultTemplateFilename);
try
{
sr = new System.IO.StreamReader(DefaultTemplateFilename, System.Text.Encoding.UTF8);
content = sr.ReadToEnd();
}
catch (Exception e)
{
if (sr == null)
throw new MessageException("网页文件(" + FullFileName + ")不存在");//设置自定义错误信息
else
throw new Exception(e.Message);
}
#endregion
}
else
throw new Exception(ex.Message);
}

输出错误提示的相关代码片断:
catch (MessageException me)
{
#region
//当未定义错误页模板时,输出系统界面
if (string.IsNullOrEmpty(website.Error.Redirect) == true)
{
Message.ShowMessage(me, 500);
Context.Response.End();
}
//将异常保存到Session中
Context.Session.Add("LastError", me);

IPage errorpage = website.GetErrorPage();//读取错误页面模板,输出自定义错误信息
Context.Response.StatusCode = 500;
errorpage.Render();
Context.Response.End();
}

问题来了:在本机调试访问不存在的页面能正常显示“网页文件(****)不存在”这样的自定义错误信息。部署到服务器上后访问站点,测试不存在的页面,发现只报“500 - 内部服务器错误。”在服务器上访问测试又能正常显示自定义提示信息。

我的猜想:由于自定义错误信息页面输出的是500状态,可能是由于IIS的设置问题,导致服务器不向远程客户商输出详细错误信息,我用的是Win2008Server,IIS7,不知道在哪设置。
又或者是其它原因?请指教。

另:
1、与IE的“显示HTTP友好错误提示”设置无关,这个我检查过的。
2、配置文件里自定义错误选项配置应该也没关系,我改过各种可能的参数也不起作用,最初的配置为:
<customErrors mode="Off">
<error statusCode="500" redirect="/Error.aspx" />
</customErrors>
...全文
248 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
李睿_Lee 2013-07-15
  • 打赏
  • 举报
回复
今天结帖了。
李睿_Lee 2013-07-13
  • 打赏
  • 举报
回复
顶个,马上要散分结帖了
party620 2013-07-12
  • 打赏
  • 举报
回复
帮顶
李睿_Lee 2013-07-12
  • 打赏
  • 举报
回复
引用 8 楼 guanlianwei 的回复:
定义错误页的问题,在本地和异地浏览器显示是不同的, 本地要显示错误提示 异地浏览器要显示错误页
我本机上是Server2003系统,在局域网测试能显示的,部署到服务器上就有问题了。另外,有用这样的方法也是可以的,不过他也是2003系统,我请教过他2008系统下的,他不会设置。
ztszhq 2013-07-12
  • 打赏
  • 举报
回复
饕餮123 2013-07-12
  • 打赏
  • 举报
回复
引用 12 楼 Novolee 的回复:
自己解决了。很简单的设置: IIS分组下的错误页,编辑功能设置,错误响应选择详细错误 散分了,赶紧来接分。
接分,接分
李睿_Lee 2013-07-12
  • 打赏
  • 举报
回复
自己解决了。很简单的设置: IIS分组下的错误页,编辑功能设置,错误响应选择详细错误 散分了,赶紧来接分。
饕餮123 2013-07-11
  • 打赏
  • 举报
回复
楼主啊,既然是你自定义了错误提示页面了,可以不返回错误状态码的哈,这样应该就好吧
微工程 2013-07-11
  • 打赏
  • 举报
回复
定义错误页的问题,在本地和异地浏览器显示是不同的, 本地要显示错误提示 异地浏览器要显示错误页
mmqw 2013-07-11
  • 打赏
  • 举报
回复
帮顶,接分
李睿_Lee 2013-07-11
  • 打赏
  • 举报
回复
引用 1 楼 sibiyellow 的回复:
看看
看出问题在哪没?请指教。
本拉灯 2013-07-11
  • 打赏
  • 举报
回复
tan598121925 2013-07-11
  • 打赏
  • 举报
回复
项上
-烟花雨季 2013-07-11
  • 打赏
  • 举报
回复
帮顶
coobai 2013-07-11
  • 打赏
  • 举报
回复
我是来接分的
天下如山 2013-07-11
  • 打赏
  • 举报
回复

62,041

社区成员

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

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

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

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