2008年4月小记

1、布署ApplicationErrorLog未处理异常处理组件。
A、引用相关组件。
B、修改Web.config
<?xml version="1.0"?>
<configuration>
    
<configSections>
        
<section name="ApplicationErrorLogData" type="Lion.Web.ApplicationErrorLog.Configuration.SqlDataProviderConfigurationRuntimeData, Lion.Web.ApplicationErrorLog, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
        
<section name="ApplicationErrorLogMail" type="Lion.Web.ApplicationErrorLog.Configuration.MailDataProviderConfigurationRuntimeData, Lion.Web.ApplicationErrorLog, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
    
</configSections>
    
<ApplicationErrorLogData Type="Lion.Web.ApplicationErrorLog.SqlErrorLog, Lion.Web.ApplicationErrorLog, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" PageSize="17" RssPageSize="20" URLParamsUsePathInfo="false" NotLogHttpExceptionCode=""/>
    
<ApplicationErrorLogMail Smtp="" SmtpPort="" LoginName="" LoginPassWord="" FromEmail="" FromName="" ToName="" ToEmail="" CC="test1@xxx.net;test2@xxx.net" AsynchronouslySendMail="false" MailCharset="utf-8"/>
    
<system.web>
        
<httpHandlers>
            
<add verb="POST,GET,HEAD" path="ErrorLog.aspx" type="Lion.Web.ApplicationErrorLog.ErrorLogPageFactory,  Lion.Web.ApplicationErrorLog, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
        
</httpHandlers>
        
<httpModules>
            
<add name="ErrorLog" type="Lion.Web.ApplicationErrorLog.ErrorLogModule, Lion.Web.ApplicationErrorLog, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
        
</httpModules>
    
</system.web>
    
<system.codedom>
    
<system.webServer>
        
<modules>
            
<add name="ErrorLog" type="Lion.Web.ApplicationErrorLog.ErrorLogModule, Lion.Web.ApplicationErrorLog, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
        
</modules>
        
<handlers>
            
<add name="ErrorLog"  verb="POST,GET,HEAD" path="ErrorLog.aspx" type="Lion.Web.ApplicationErrorLog.ErrorLogPageFactory,  Lion.Web.ApplicationErrorLog, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
        
</handlers>
    
</system.webServer>
</configuration>


注意:
     <add verb="POST,GET,HEAD"
       path="[查看异常列表所指定的路径文件名]"
       type="Lion.Web.ApplicationErrorLog.ErrorLogPageFactory, Lion.Web.ApplicationErrorLog, Version=1.0.2004.1027, Culture=neutral, PublicKeyToken=ee91461c95f67bb1" />
       查看异常列表所指定的路径文件名/clear 清空错误信息
       查看异常列表所指定的路径文件名/install 初始化安装数据库
       查看异常列表所指定的路径文件名/rss 获取以rss格式展现的错误信息列表
       查看异常列表所指定的路径文件名?Domain=www.lionsky.net 获取所有在www.lionsky.net域名下发生的错误信息列表
       />
     注意:当URLParamsUsePathInfo属性为false时,以上命令请使用?Command=[clear|install|rss]

/ApplicationErrorLog.aspx?Command=install 安装日志数据库
/ApplicationErrorLog.aspx?Command=clear 清空错误信息

2、
Master页面传值。
A、定义接口IMasterData
    /// <summary>
    
/// 母版页的数据
    
/// </summary>

    public interface IMasterData
    
{
        
/// <summary>
        
/// 登录用户名
        
/// </summary>

        string UserName getset; }
    }
B、Master页面实现该接口
public partial class MPCommon : System.Web.UI.MasterPage, IMasterData
{
    
public string UserName
    
{
        
get
        
{
            
return this.ViewState["UserName"== null ? null : Convert.ToString(this.ViewState["UserName"]);
        }

        
set
        
{
            
this.ViewState["UserName"= value;
        }

    }


    
protected override void OnInit(EventArgs e)
    
{
        
base.OnInit(e);
        UserName 
= ObjectFactory.CreateIPassportService().GetCurrentUser();
    }

}
C、封装方法
    public static class PageHelper
    
{
        
/// <summary>
        
/// 获取当前登录用户的用户名
        
/// </summary>
        
/// <param name="page"></param>
        
/// <returns></returns>

        public static string GetCurrentUserName(Page page)
        
{
            IMasterData iMasterData 
= null;

            iMasterData 
= page.Master as IMasterData;
            
if(iMasterData == null)
                iMasterData 
= page.Master.Master as IMasterData;

            
if (iMasterData == null)
            
{
                
throw new Exception("页面使用的嵌套Master没有实现IMasterData接口,不能通过这个方法获取当前登录用户名");
            }


            
return iMasterData.UserName;
        }

    }
这样可以支持两层Master的嵌套。
D、使用方法。
    string CurrentUserName;
    
protected void Page_Load(object sender, EventArgs e)
    
{
        CurrentUserName 
= PageHelper.GetCurrentUserName(this.Page);
    }

3、解决"无法使用前导..在顶级目录上退出"
修改web.config
        <authentication mode="Forms">
            
<forms cookieless="UseCookies"></forms>
        
</authentication>
http://community.studyez.com/blogs/silentacorn/archive/2006/10/20/23194.aspx
http://www.cnblogs.com/hjf1223/archive/2006/10/14/529227.html
http://todotnet.com/archive/2006/07/01/7472.aspx

4、TimeSpan的字符串表达,及如何设置WCF的毫秒级超时
可以按“[-]d.hh:mm:ss.ff”格式将 TimeSpan 表示为一个字符串,其中“-”是用于表示负 TimeSpan 值的可选符号,“d”部分为天,“hh”为小时,“mm”为分钟,“ss”为秒,而“ff”为秒的小数部分。例如,初始化为 1.0e+13 刻度的 TimeSpan 表示“11.13:46:40”,即 11 天,13 小时,46 分钟和 40 秒。
http://hi.baidu.com/heiru/blog/item/2e4cd42abfcea42dd52af12a.html
所以500毫秒的超时可以这样设置 sendTimeout="00:00:00.5"
                <binding name="IBlogContractBinding" sendTimeout="00:00:00.5" maxReceivedMessageSize="500000000">
                    
<security mode="None"/>
                    
<readerQuotas maxDepth="32"
                                  maxStringContentLength
="500000000"
                                  maxArrayLength
="16384"
                                  maxBytesPerRead
="4096"
                                  maxNameTableCharCount
="16384" />
                
</binding>



posted @ 2008-04-07 16:26  chenjunbiao  阅读(284)  评论(0编辑  收藏  举报