Archive for the ‘ASP.NET’ Category

一句话解决ASP.NET中文表单提交乱码问题

星期五, 十月 4th, 2013 37 views

通常在.NET链接数据库使用中文做为SELECT的条件时,如果出现无法找到等异常情况,可以先确认一下是否是从表单提交过来的中文出现了乱码。
针对乱码我们可以尝试如下方法。
在Web.config中的节点里添加如下语句:

1
 <globalization requestEncoding="GB2312" responseEncoding="GB2312"/>

OK一切搞定。

BeiTown
2013.10.04

ASP.NET使用GridView对数据库快速操作

星期四, 九月 19th, 2013 24 views

①绑定及显示数据

首先在界面中创建一个SqlDataSource和一个GridView控件,配置SqlDataSource绑定到指定数据库的某一个表(例如某test表)。接下来将这个数据源绑定到GridView中(自动生成需要的行列),效果如图

此时编译运行程序即可看到test表中的内容,这段界面的代码如下(自动生成)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="id" DataSourceID="SqlDataSource1" style="margin-right: 34px">

            <Columns>
                <asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
                   ReadOnly="True" SortExpression="id" />
                <asp:BoundField DataField="userName" HeaderText="userName"
                   SortExpression="userName" />
                <asp:BoundField DataField="passWord" HeaderText="passWord"
                   SortExpression="passWord" />
                <asp:BoundField DataField="Role" HeaderText="Role" SortExpression="Role" />
            </Columns>
        </asp:GridView>

        <asp:SqlDataSource ID="SqlDataSource1" runat="server"
           ConnectionString="<%$ ConnectionStrings:mytestConnectionString %>"
            SelectCommand="SELECT * FROM [test] ORDER BY [id]">
        </asp:SqlDataSource>

②对数据进行编辑
如图点击GridView右侧的按钮添加一个列,在这个列中加入编辑按钮

此时会生成如下一段代码

1
 <asp:CommandField ShowEditButton="True" />

编译运行程序效果如图

点击界面上的[编辑]出现如图

即可对数据库test表的目标行进行修改,点击[修改]即可执行UPDATA命令。

以上即快速实现了一个对数据库表进行修改的Demo。

总结:
此方案的优点是开发异常迅速,基本不用编写代码即可完成对数据库表的显示、查询、以及修改。
但弊端也是由于代码编写量少,无法加入更多的逻辑内容。

BeiTown
2013.09.19

ASP.NET 数据库(SQL SERVER)操作的最简Demo

星期一, 九月 2nd, 2013 148 views

首先创建一个数据库操作基类DB.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Configuration;
using System.Data;
using System.Security.Cryptography;
/// <summary>
///DB 的摘要说明
/// </summary>
public class DB
{
    public static string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
    public DB(){}

    /// <summary>
    ///创建连接
    /// </summary>
    public SqlConnection GetConnection()
    {
        return new SqlConnection(connectionString);
    }

    /// <summary>
    ///执行语句并返回行数
    /// </summary>

 <a href="http://coder.beitown.com/archives/1014#more-1014" class="more-link">(更多...)</a>

.NET 验证视图MAC失败 Validation of ViewState MAC Failed 的解决方法

星期日, 七月 28th, 2013 56 views

最近给网站服务器做了集群,即用智能DNS做多台服务器的联合,可以保证在一台网站服务器宕机的情况下,网站不会出现无法访问的情况。但问题随着而来,最近经常有客户反映出现Validation of ViewState MAC Failed 错误。
如图


翻译为:
验证视图MAC失败。如果此应用程序由群集承载,请确保配置指定了相同的 validationKey 和验证算法。不能在群集中使用 AutoGenerate。

在微软官方获得了解决方案。错误原因是集群web服务器应当设置相同的validationKey和decryptionKey。
因为.NET 的很多加密,都是依赖于machineKey中的key,默认情况下.NET 会动态生成这个key,但每台服务器上的动态生成的machinekey值是不一致的,单服务器不会出现问题。
而在集群情况下,machinekey不一致的话,不能共享验证和ViewState,因此对于集群.NET,一定要使用相同的machineKey。
因此需要在web.config中手动添加这个machineKey:

1
2
3
4
5
<system.web>
    <machineKey validationKey="24-64位key(如3FF1E929BC0534950B0920A7B59FA698BD02DFE8)"
   decryptionKey="24-64位key(如280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77)"
   decryption="AES" validation="SHA1"/>
</system.web>

上面的validationKey和decryptionKey都可以自己生成,网上已经很多生成方法,这里直接复制过来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
string validationKey = GetKey(30); //20~64均可
string decryptionKey = GetKey(30); //20~64均可

protected string GetKey(int Keylen)
{
    byte[] bytes = new byte[Keylen];
    new RNGCryptoServiceProvider().GetBytes(bytes);
    StringBuilder Builder = new StringBuilder();
    for (int i = 0; i < bytes.Length; i++)
    {
        Builder.Append(string.Format("{0:X2}", bytes[i]));
    }
    return Builder.ToString();
}

另一种处理方法是直接关闭ViewStateMac功能,在页面头部添加配置信息:enableViewStateMac=”false”
<%@ Page Language="C#" enableViewStateMac="false"%>
但涉及到页面提交,form验证,共享session等功能都需要使用到ViewStateMac,所以此方案无异于自杀,因此也被大多数开发者唾弃。

本文仅供参考,到此搁笔,谢谢关注。

BeiTown
2013.07.28

IIS 401.1、401.2错误的解决方法

星期二, 六月 11th, 2013 61 views

401.1错误

如图,在IIS中创建一个新的网站后出现如下情况,出现401.1错误即用户访问权限错误

解决方法如下:
①确认 我的电脑–管理–本地用户和组 中IUSR_机器名帐号已经启用并且未被锁定
②确认 网站–属性–目录安全性–身份验证和访问控制中启用了匿名访问并且帐号密码正确

配置如上图。

完成以上操作后即可解决。
(更多…)