输入字符串的格式不正确 .net

输入字符串的格式不正确 .net,第1张

1、首先打开vs2017。

2、新添加一个项目。

3、选择一个类库。

4、就在这个cs类中写,方法的目的就是给所有的字符串后边添加@符号。

5、先创建方法名词,这里就起名addChars。

6、填充里面的方法,并重新改造一下,将方法改为静态public static string addChars(this string str){return str + "@";}。

7、新建一个aspnet网站,将创建好的扩展方法引入。

8、下面开始写测试代码,创建2个label出来。

9、最后后台调用扩展方法,看结果就完成了。

//删掉

ResponseWrite("<meta http-equiv=Content-Type content=\"text/html; charset=GB2312\">");

//加上这句

 HttpContextCurrentResponseContentType ="application/ms-excel";

ASPNET WEB程序的先是生成一个DLL文件,然后用IIS动态加载这个DLL文件,利用提供的接口处理方法和事务,那么在运行时就需要把DLL复制到程序集的缓存目录中,c:\WINDOWS\MicrosoftNET\Framework\v2050727\Temporary ASPNET Files\root\ff8572ba\92e305f7这个就是你的这个WEB程序的缓存文件夹

可能是安全软件(杀毒软件,防火墙等)拦截,因为这个文件夹是在WINDOWS目录中,很多安全软件都会拦截写入操作,因此会出现这个异常,尝试关闭安全软件

不在前台写ConnectionString和SelectCommand的值,

在后台的PageLoad事件来进行赋值

public PageLoad(object sender,EnentArg e)

{

string ConStr="";

SqlDataSource1ConnectionString=ConStr;

SqlDataSource1SelectCommand="";

}

这样不就好了吗,在那里面你还可以对连接字符串进行不同的赋值

还有问题QQ252989674

先分析原因。

你出现这个错误是因为你没有了解ASPNET的工作原理。ASPNet 和php,jsp ,asp等服务器语言一样 都是为了生成可供浏览器解析的页面,而可供浏览器解析的语言只有HTML。

1,如果你在aspx页面中插入一个asp:LinkButton 那么运行页面后 在浏览器中查看源代码你会发现这个标签实际被转为了一个<a>标签。

2,为什么你的写法不会转换呢?因为首先 传递给Literal1Text 的值在aspnet中作为一段字符串被直接输出到浏览器中。那么你的写法到浏览器后源代码中仍然是一个asp:LinkButton 标签,而这个标签是无法被浏览器正确解析的。

解决办法:

知道了原因,那么如果非要按照你的写法去写,那么应该是这样的:

Literal1Text = "<li>" + ((users)Session["users"])NameToString() + "</li><li> </li><li><a ID='LinkButton1' onclick='LinkButton1_Click1'>注销</a></li><li> </li><li>信息修改</li><li> </li>";

但是当你修改完后发现点击注销按钮依然不能执行!为什么呢?

因为你的LinkButton1_Click1 事件并没有在aspnet中被解析为可供浏览器识别的js代码。

如何解决?

在aspx页面中写一个asp:LinkButton按钮:

<asp:LinkButton ID='LinkButton2' runat='server' onclick='LinkButton1_Click1'>注销</asp:LinkButton>

运行页面,查看源代码 看看这个新加的注销按钮被解析为了什么html代码,大概如下

<a id="LinkButton2" onclick="xxxxx"></a>

将新加的linkbutton 设置不可见属性

<asp:LinkButton ID='LinkButton2' runat='server' visible="false" onclick='LinkButton1_Click1'>注销</asp:LinkButton>

重新修改后台代码

Literal1Text = "<li>" + ((users)Session["users"])NameToString() + "</li><li> </li><li><a ID='LinkButton1' onclick='xxxxx'>注销</a></li><li> </li><li>信息修改</li><li> </li>";

//也就是将标签的js事件绑定到那个隐藏的注销按钮事件上。

希望对你有帮助

要进行MD5加密的字符串不含中文时,那么ASPNET的加密结果和ASP是一致的: ResponseWrite(FormsAuthenticationHashPasswordForStoringInConfigFile("wwwmzwucom", "MD5"));

//结果:D66E1F138689B9B5AA4C520D9EAFFB61

ResponseWrite(MD5("wwwmzwucom",32))

'结果:d66e1f138689b9b5aa4c520d9eaffb61

当要进行MD5加密的字符串含中文时,两者的加密结果就不一致了:ResponseWrite(FormsAuthenticationHashPasswordForStoringInConfigFile("木子屋", "MD5"));

//结果:34D9CBD5164C47058DFA3AF832E2D1DC ResponseWrite(MD5("木子屋",32))

'结果:0a40a90190da023ae7aa17771663a41e 我们知道,ASPNET默认使用 utf-8编码格式,而ASP使用的是gb2312编码格式,正是由于这编码格式不同,才导致了两者对中文加密结果的不同。下边我们看看怎么让 ASPNET的编码结果和ASP一样,那也就意味着要让ASPNET采用gb2312编码格式,这点 FormsAuthenticationHashPasswordForStoringInConfigFile()方法是办不到的,我们得使用 SystemSecurityCryptographyMD5CryptoServiceProvider对象的ComputeHash方法来进行 加密:MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();

ResponseWrite(BitConverterToString(MD5ComputeHash(EncodingGetEncoding("gb2312")GetBytes("木子屋")))Replace("-", ""));

//结果:0A40A90190DA023AE7AA17771663A41E

若要再使用utf-8加密也非常容易:MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();

ResponseWrite(BitConverterToString(MD5ComputeHash(EncodingGetEncoding("utf-8")GetBytes("木子屋")))Replace("-", ""));

//结果:34D9CBD5164C47058DFA3AF832E2D1DC 问题似乎是比较完美的解决了,我们再 来完善一下:当要加密的字符串是从其他页面传进来时,其他页面采用的编码格式可能是gb2312,可能是utf-8,还可能是其他的编码格式,怎么解决 呢?你可能会觉得很简单啊,使用它先前的编码格式进行加密不就行了?实际测试中你会发现两个很严重的问题:1 我们无从知道参数传过来时是使用什么编码格式;

2 如果两个页面使用的编码方式不一样,那么Request接收到的参数值会乱码,那就不要谈加密了;问题1比较好解决,要求对方传参数的同时必须多加一个参数说明采用的编码格式,问题2的解决方法是不使用Request直接接收参数值,废话不多说了,看下边的函数:

///// <summary>

/// 对字符串进行MD5加密

/// </summary>

/// <param name="text">要加密的字符串</param>

/// <param name="charset">字符串编码格式</param>

/// <example>str = MD5("木子屋","gb2312");</example>

/// <returns></returns>

public string MD5(string text, string charset)

{

return (MD5(text, charset, false));

}

///// <summary>

/// 对字符串或参数值进行MD5加密

/// </summary>

/// <param name="text">要加密的字符串或参数名称</param>

/// <param name="charset">字符串编码格式</param>

/// <param name="isArg">加密字符串类型 true:参数值 false:字符串</param>

/// <returns></returns>

public string MD5(string text, string charset, bool isArg)

{

try

{

MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();

if (isArg)

{

NameValueCollection Collect = HttpUtilityParseQueryString(RequestUrlQuery, EncodingGetEncoding(charset));//使用Collect接收参数值

if (Collect[text] != null)

{

return BitConverterToString(MD5ComputeHash(EncodingGetEncoding(charset)GetBytes(Collect[text]ToString())))Replace("-", "");

}

}

else

{

return BitConverterToString(MD5ComputeHash(EncodingGetEncoding(charset)GetBytes(text)))Replace("-", "");

}

}

catch { }

return stringEmpty;

}

说明1:上边代码需要引入的命名空间using SystemText;

using SystemWebSecurity;

using SystemSecurityCryptography;

using SystemCollectionsSpecialized;说明2:32位密文如何转化成16位?16位密文是32位密文的9到24位字符。如:"0a40a90190da023ae7aa17771663a41e"→"90da023ae7aa1777"

关掉 VS 和 IE, 然后将

c:\WINDOWS\MicrosoftNET\Framework\v2050727\Temporary ASPNET Files\root\

下的内容全部删除,

然后重新编译你的项目

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 输入字符串的格式不正确 .net

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情