设为首页 加入收藏

TOP

记我遇到过的奇葩问题(二)
2019-09-03 03:14:59 】 浏览:37
Tags:遇到 奇葩 问题
次replace只能替换一个<br />
$.ajax({ url: "/Test/DoSomething", type: "POST", data: { json: json, otherInfo: otherInfo }, cache: false, async: true, success: function (ret) { data = JSON.parse(ret); // TODO }, error: function (e) { layer.alert("失败"); } }); };

结果返回:302 Found。在没加async:true之前,是在error信息中,报的是未知错误,加上async:true之后,抱错在success中,返回html格式的信息,也是:未知错误。百度搜索了一下也没找到什么有效的办法,于是就在MVC中打断点,发现直接报错为:form提交存在安全隐患,原因是:json字符串中包含:<br />。

解决办法:替换<br />为\r\n之后。搞定。

10、ajax请求报:无法向会话状态服务器发出会话状态请求

ajax请求报:无法向会话状态服务器发出会话状态请求。请确保 ASP.NET State Service (ASP.NET 状态服务)已启动,并且客户端端口与服务器端口相同。如果服务器位于远程计算机上,请检查 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\aspnet_state\Parameters\AllowRemoteConnection 的值,确保服务器接受远程请求。如果服务器位于本地计算机上,并且上面提到的注册表值不存在或者设置为 0,则状态服务器连接字符串必须使用“localhost”或“127.0.0.1”作为服务器名称。

http://www.cnblogs.com/lcl_1015/articles/2038103.html

 

11、ThrowCryptogaphicException

错误信息:

System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr)
在 System.Security.Cryptography.X509Certificates.X509Utils._LoadCertFromFile(String fileName, IntPtr password, UInt32 dwFlags, Boolean persistKeySet, SafeCertContextHandle& pCertCtx)
在 System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile(String fileName, Object password, X509KeyStorageFlags keyStorageFlags)
在 System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(String fileName, String password)
在 Better.AlipayInterface.InterfaceUtility.GetRequestResult(String requestUrl, Int32 timeout, SendMethod requestMethod, String codeName, String certFile, String certPasswd)

解决方法:

http://stackoverflow.com/questions/9951729/x509certificate-constructor-exception

即:应用程序池--->高级设置--->加载用户配置文件设置为True

12、记用ajax的一个bug

遇到一个bug,IE8,只有第一次功能正确,后面都不生效。我看了一下,确实IE存在问题,调试发现根本不进入后台,于是我猜测是缓存的问题,于是加上cache:false,解决了问题。

 $.ajax(
        {
            url: "ParaSetting/OpenOrCloseParam",
            data: {
                Id: id
            },
            cache:false,
            type: "get",
            success: function (data) {
                alert(data);
                if (data === "操作失败") {
                    layer.alert("操作失败");
                }
                else {
                    window.location.reload();
                }
            },
            error: function (e) {
                alert(e);
            }
        });

后来新同学百度一下,发现jquery中 cache: true和false的区别如下:
true的话会读缓存,可能真的到服务器上。

假如上次访问了a.html,第二次的时候得到的是上次访问的a.html的结果,而不是重新到服务器获取。
false的话会在url后面加一个时间缀,让它跑到服务器获取结果。
cache只有GET方式的时候有效。

13、多线程索引超限制

错误日志如下:

System.ArgumentOutOfRangeException: 索引超出范围。必须为非负值并小于集合大小。
参数名: index
   在 System.ThrowHelper.ThrowArgumentOutOfRangeException()
   在 System.Collections.Generic.List`1.RemoveAt(Int32 index)
   在 System.Collections.Generic.List`1.Remove(T item)
   在 *** 位置***.cs:行号 118

 跟到代码发现是这样一句:dealingTaskList是List<string>,taskID是string。

dealingTaskList.Remove(taskID);

  怎么看都不会出现问题,但结果就是出现问题了,于是我就改成下面这个:

if (dealingTaskList != null && dealingTaskList.Exists(sa => sa == taskID))
{
    dealingTaskList.Remove(taskID);
}

  结果还是报错,实在没有办法了,只好记日志看看是不是出现在这个地方。但是中途我又想起他们好像是开线程做的,会不会是多线程的时候出现问题呢?于是我把代码改成下面这个样子。为防止万一,我还是把日志记上。

lock (lockObj)
{
    if (dealingTaskList != null && dealingTaskList.Exists(sa =>
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇初学者的编程自学指南 下一篇汇付 支付,痛苦的接入过程

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目