运行程序发现以下错误:


验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 <machineKey> 配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。


我是在个人电脑上进行运行,怎么会出现这种错误呢?
在网上查了不少资料说是在web.config里改一下page的属性设置,我奇怪的是为什么别的程序没有出事这种问题?是同样一台电脑啊?为什么会出现这种错误?想请问大伙!

posted @ 2008-02-25 08:54 folen 阅读(147) | 评论 (1)编辑
转载:http://msdn2.microsoft.com/zh-cn/library/e3w8402y(VS.80).aspx

ASP.NET 输出缓存的一项高级功能是 SQL 缓存依赖项。SQL 缓存依赖项使您可以缓存依赖于 SQL Server 表中数据的页。您可以配置 SQL Server 和 ASP.NET 以缓存页请求,降低服务器工作负荷,直到页所依赖的数据已在 SQL Server 中更新为止。对于相对保持静态的产品目录或客户注册信息等数据而言,SQL 缓存依赖项很有用。

本演练中阐释的任务包括:

  • 创建并配置页,以显示 Northwind 数据库中的数据。

  • 为 SQL 缓存通知启用数据库。

  • 在页以及 Web.config 文件中指定 SQL 缓存依赖项。

  • 对 Northwind 数据库进行更改并查看缓存行为。

先决条件先决条件

若要完成本演练,您需要:

创建网站创建网站

如果您已在 Visual Web Developer 中创建了网站(请参见 演练:在 Visual Web Developer 中创建基本网页),则可以使用该网站并转至本演练的后面部分“为 SQL Server 启用缓存通知”。否则,按照下面的步骤创建一个新的网站和网页。

创建文件系统网站

  1. 打开 Visual Web Developer。

  2. 在“文件”菜单上单击“新建网站”。(在 Visual Web Developer 速成版中,在“文件”菜单上单击“新建”,然后单击“网站”。)

    出现“新建网站”对话框。

  3. 在“Visual Studio 已安装的模板”之下单击“ASP.NET 网站”。

  4. 在“位置”框中输入要保存网站页面的文件夹的名称。

    例如,键入文件夹名 C:\WebSites。

  5. 在“语言”列表中,单击您想使用的编程语言。

  6. 单击“确定”。

    Visual Web Developer 创建该文件夹和一个名为 Default.aspx 的新页。

为 SQL Server 启用缓存通知为 SQL Server 启用缓存通知

必须配置 SQL Server 以就依赖数据中的更改向 ASP.NET 提供合适的通知。您需要具有管理特权才能配置服务器。

为 SQL Server 启用缓存通知

  1. 在 Windows“启动”菜单中,指向“所有程序”,指向“附件”,然后单击“命令提示符”以打开命令提示窗口。

  2. 在磁盘驱动器中找到 Aspnet_regsql.exe 可执行文件。此文件随 .NET Framework 2.0 版安装在下面的位置:

    %windir%\Microsoft.NET\Framework\FrameworkVersion

    确保 %windir% 表示 Windows 目录并且 .NET Framework 版本为 2.0 或更高版本。该路径可能看起来类似于下面这样:

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.40217
  3. 使用下面的命令为 Northwind 数据库中的 Employees 表启用缓存通知:

    aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d Northwind -et -t Employees
    Note注意

    您需要具有管理特权,或管理帐户和密码。如果没有此信息,请与数据库管理员联系。

    将出现一条消息,指示启用数据库的成功与失败。下面的消息指示成功:

    Enabling the table for SQL cache dependency.
    ..
    Finished.
向网页添加时间戳和数据向网页添加时间戳和数据

现在可以创建网页来演示缓存处理。在本节中,您将添加一个时间戳来跟踪页创建时间,并添加一个 GridView 控件来查看 Northwind 数据库的 Employees 表。

向网页添加时间戳和数据

  1. 切换到或打开 Default.aspx 页。

  2. 切换到“设计”视图。

  3. 从工具箱的“标准”组中,将一个 Label 控件拖到页上,保留默认名称 Label1

  4. 在“服务器资源管理器”(Visual Web Developer 速成版中为“数据库资源管理器”)中,展开“数据连接”。

  5. 为以前创建的数据连接展开节点。

  6. 展开“表”节点。

  7. 将 Employees 表拖到页上。

    Visual Web Designer 创建一个 GridView 控件,它配置为使用您所选择的连接和表。

  8. 在“GridView 任务”菜单上,单击“配置数据源。

    默认数据连接字符串名称 NorthwindConnectionString1 出现在“配置数据源”向导的第一个步骤中。

  9. 单击“下一步”。

  10. 在“配置 Select 语句”窗格中,选择“指定来自表或视图的列”。

  11. 在“名称”列表中,单击 Employees。

  12. 在“列”列表中,选择 EmployeeID、LastName 和 FirstName 列。

  13. 单击“下一步”。

  14. 单击“完成”。

    Visual Web Designer 配置 GridView 控件以显示您所选择的数据。

    Note注意

    如果看到一条消息询问您是否要刷新 GridView 控件的字段和键,单击“是”。

  15. 双击页的空白部分。

    设计器生成 Page_Load 方法并切换视图。

  16. 添加以下突出显示的代码,以显示指示页创建的时间戳:

    Visual Basic
    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs) _
            Handles Me.Load
    <b>     Label1.Text = System.DateTime.Now</b>
    End Sub
    

    protected void Page_Load(Object sender, System.EventArgs e)
    {
    <b>     Label1.Text = System.DateTime.Now.ToString();</b>
    }
    
  17. 保存该文件。

为缓存功能配置网页为缓存功能配置网页

在本部分演练中,您将基于 Northwind 数据库的 Employees 表为 SQL 缓存依赖项配置页。

为缓存功能配置网页

  1. 切换到“源”视图。

  2. 在页顶部,添加下面的指令以指示依赖项:

    <%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>

VaryByParam 属性指示缓存时 ASP.NET 是否应考虑页参数(如查询字符串或发布值)。当 VaryByParam 设置为 none 时,将不考虑任何参数;无论提供什么附加参数,都将向所有用户发送相同的页。将 VaryByParam 设置为 *(星号)表明,对于每个唯一的请求参数组合,将缓存一个唯一页。但是,将 VaryByParam 设置为 * 会缓存页的许多不同版本,所以如果您知道缓存变化所依据的参数,建议您在 VaryByParam 属性中显式指定这些参数。有关详细信息,请参见 缓存页的多个版本

在 Web.config 文件中设置缓存配置在 Web.config 文件中设置缓存配置

除了前面部分中网页的 OutputCache 声明外,您需要在 Web.config 文件中指定缓存详细信息。

创建和更新 Web.config 文件

  1. 如果您的网站已具有 Web.config 文件,请转至步骤 4。

  2. 在解决方案资源管理器中,右击网站的名称,然后单击“添加新项”。

  3. 在“添加项”对话框中,单击“Web 配置文件”,然后单击“添加”。

    请确保使用名称 Web.config。

  4. 将下面的 XML 作为 system.web 元素的子级添加到 Web.config 文件中:

    <!-- caching section group -->
    <caching>
      <sqlCacheDependency enabled = "true" pollTime = "1000" >
        <databases>
          <add name="Northwind" 
             connectionStringName="NorthwindConnectionString1"
             pollTime = "1000"
          />
        </databases>
      </sqlCacheDependency>
    </caching>
    Note注意

    前面您在创建数据连接时,已建立了连接字符串名称 NorthwindConnectionString1。如果您的连接字符串具有不同的名称,请替换为该名称。

    Note注意

    在连接字符串中指定的帐户凭据必须具有足够的特权来轮询数据库。

  5. 保存文件,然后将其关闭。

posted @ 2007-07-16 17:00 folen 阅读(120) | 评论 (0)编辑
使用gridview控件,后台绑定的数据,在GridView1_RowDeleting(object   sender,   GridViewDeleteEventArgs   e)和GridView1_RowUpdating(object   sender,   GridViewUpdateEventArgs   e)事件中,使用e.keys[0].ToString()无法获得主键,用e.keys.count得到的数值为0。gridview的DataKeyNames="id"已经设置。  
  e.keys["id"]同样无效,会提示“异常详细信息:   System.NullReferenceException:   未将对象引用设置到对象的实例。  
  ”  
  而e.keys[0]则提示   “索引超出范围”  
   
  另外试过,如果用数据源控件就没问题。  
   
  用.GridView1.DataKeys代替能解决问题,不过我想搞清楚这个到底是什么问题,网上搜到的都是替代解决方法,我自己也用.GridView1.DataKeys替代了,到底为什么e.keys[0]不可以还是没搞清楚,希望懂的人不吝赐教。
posted @ 2007-07-08 17:31 folen 阅读(1019) | 评论 (3)编辑

刚在当当上买了本《软件设计精要与模式》 ,看了前几章,感觉写的不错!

posted @ 2007-06-03 17:54 folen 阅读(27) | 评论 (0)编辑
CREATE function dbo.split_string(@LongStr varchar(8000),@SearchStr varchar(10))
 returns @t table(s varchar(100))
as
begin
 while (charindex(@SearchStr,@LongStr)>0)
 begin
  insert @t select left(@LongStr,charindex(@SearchStr,@LongStr)-1)
  select @LongStr=stuff(@LongStr,1,charindex(@SearchStr,@LongStr),'')
 end
 insert @t select @LongStr
 return
end
posted @ 2007-03-18 22:48 folen 阅读(38) | 评论 (0)编辑

小弟在博客园这么久,还没为园子做点什么贡献,实在惭愧,今天看到MSDN上工作流的一些东西,想翻译一下,自当锻炼一下英文,呵呵
  虽然小弟英文不好,但还是试一下。
如有朋友想看原英文的,MSDN地址:http://msdn2.microsoft.com/en-us/library/aa480215.aspx


Windows Workflow Foundation描述
      实事上今天的企业应用软件都有一个共同的目标:支持业务流程处理。利用不同程序之间的通信,一些业务流程实现了自动化。或许大部分还是通过人工开始一个流程,并通过文档审阅来解决经常出来 现的各种问题。另一方面, 我们可以把一连串的分离的过程定义为了一个工作流来描述人和软件需要解决的业务流程的一些活动。一但工作流补定义完,程序可以根据他来执行业务过程。
     创建和执行一个工作流带来一个新的挑站。一些业务流程可能要执行几小时`几天`甚至几星期才能完成,做为一个开发者,在这么长的时间内,如何才能维持工作流的当前状态呢?这种长时间执行的工作流也有可能在不壁塞的情况下和其它程序进行通信。开发者如何才能轻松做到异步通信。

posted @ 2007-03-18 12:51 folen 阅读(107) | 评论 (0)编辑
     摘要: 转自MSDN:http://www.microsoft.com/china/MSDN/library/netFramework/netframework/intronetfx30.mspx?mfr=true描述 .NET Framework 3.0应用程序开发的目标始终如一,就是在最短时间内制作出最好的软件。然而,随着开发平台的性能越来越高,制作软件的壁垒也相应提高了。以 Windows 为例,原... 阅读全文
posted @ 2007-03-17 22:52 folen 阅读(135) | 评论 (0)编辑