每当用户在我的Web应用程序中发布包含<
或>
在页面中的内容时,我都会抛出此异常.
我不想进入关于抛出异常或崩溃整个Web应用程序的聪明性的讨论,因为有人在文本框中输入了一个字符,但我正在寻找一种优雅的方法来处理这个问题.
捕获异常并显示
发生错误请返回并重新输入整个表单,但这次请不要使用<
对我来说似乎不够专业.
禁用post validation(validateRequest="false"
)肯定会避免此错误,但它会使页面容易受到许多攻击.
理想情况:当发回包含HTML限制字符的回发时,Form集合中的已发布值将自动进行HTML编码.所以.Text
我的文本框的属性将是something & lt; html & gt;
有没有办法可以从处理程序中执行此操作?
每次我将webapp上传到提供商时都会出错.由于customErrors模式,我看到的只是默认的"运行时错误"消息,指示我关闭customErrors以查看有关错误的更多信息.
恼怒,我已将我的web.config设置为如下所示:
<?xml version="1.0"?>
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
而且,我得到的只是愚蠢的远程错误页面,没有任何有用的信息.我还能做些什么来关闭自定义错误!
好吧,我的代码抛出一个奇怪的例外,这个例子一直困扰着我多年.
System.Net.Sockets.SocketException: A blocking operation was interrupted by a call to WSACancelBlockingCall
at System.Net.Sockets.Socket.Accept()
at System.Net.Sockets.TcpListener.AcceptTcpClient()
Run Code Online (Sandbox Code Playgroud)
MSDN对此并不十分有用:http://msdn.microsoft.com/en-us/library/ms741547(VS.85).aspx,我甚至不知道如何开始对此进行故障排除.它每天只抛出4到5次,而且从不在我们的测试环境中.仅限生产站点和所有生产站点.
我发现有很多帖子询问这个异常,但没有真正明确的答案是什么导致它,以及如何处理或阻止它.
代码在单独的后台线程中运行,该方法启动:
public virtual void Startup()
{
TcpListener serverSocket= new TcpListener(new IPEndPoint(bindAddress, port));
serverSocket.Start();
Run Code Online (Sandbox Code Playgroud)
然后我运行一个循环,将所有新连接作为作业放在一个单独的线程池中.由于应用程序架构,它变得更加复杂,但基本上:
while (( socket = serverSocket.AcceptTcpClient()) !=null) //Funny exception here
{
connectionHandler = new ConnectionHandler(socket, mappingStrategy);
pool.AddJob(connectionHandler);
}
}
Run Code Online (Sandbox Code Playgroud)
从那里开始,pool
它拥有自己的线程,分别处理它自己的线程中的每个工作.
我的理解是AcceptTcpClient()是一个阻塞调用,并且不知何故winsock告诉线程停止阻塞并继续执行..但为什么呢?那我该怎么办?抓住异常并忽略它?
好吧,我确实认为其他一些线程正在关闭套接字,但它肯定不是来自我的代码.我想知道的是:这个套接字是由连接客户端(在套接字的另一端)关闭还是由我的服务器关闭.因为就在这时,每当发生此异常时,它会关闭我的侦听端口,从而有效地关闭我的服务.如果这是从远程位置完成的,那么这是一个主要问题.
或者,这可能只是IIS服务器关闭我的应用程序,从而取消所有我的后台线程和阻止方法?
我正在使用GLSL着色器编写一个小型渲染引擎:
每个网格(井,子网格)都有一些顶点流(例如位置,法线,纹理,切线等)到一个大的VBO和一个MaterialID中.
每个材质都有一组纹理和属性(例如镜面反射颜色,漫反射颜色,颜色纹理,法线贴图等)
然后我有一个GLSL着色器,它的制服和属性.让我们说:
uniform vec3 DiffuseColor;
uniform sampler2D NormalMapTexture;
attribute vec3 Position;
attribute vec2 TexCoord;
Run Code Online (Sandbox Code Playgroud)
我试图为GLSL着色器设计一种方法来定义属性和制服的流映射(语义),然后将顶点流绑定到适当的属性.
对网格说法的内容:"将您的位置流放在属性"位置"中,将您的tex坐标放在"TexCoord"中.还将材质的漫反射颜色放在"DiffuseColor"中,将材质的第二个纹理放在"NormalMapTexture"中
目前我正在使用硬编码的名称作为属性(即顶点pos始终是"位置"等)并检查每个统一和属性名称以了解着色器使用它的内容.
我想我正在寻找一种创建"顶点声明"的方法,但也包括制服和纹理.
所以我只是想知道人们如何在大型渲染引擎中做到这一点.
编辑:
回顾建议的方法:
1.属性/统一语义由变量名称给出 (我现在正在做什么)为每个可能的属性使用预定义的名称.GLSL绑定器将查询每个属性的名称并基于该属性链接顶点数组.变量名称:
//global static variable
semantics (name,normalize,offset) = {"Position",false,0} {"Normal",true,1},{"TextureUV,false,2}
...when linking
for (int index=0;index<allAttribs;index++)
{
glGetActiveAttrib(program,index,bufSize,length,size[index],type[index],name);
semantics[index]= GetSemanticsFromGlobalHardCodedList(name);
}
... when binding vertex arrays for render
for (int index=0;index<allAttribs;index++)
{
glVertexAttribPointer(index,size[index],type[index],semantics[index]->normalized,bufferStride,semantics[index]->offset);
}
Run Code Online (Sandbox Code Playgroud)
2.每个语义的预定义位置
GLSL绑定器将始终将顶点数组绑定到相同的位置.着色器可以使用相应的名称进行匹配.(这看起来非常类似于方法1,但除非我误解,否则这意味着绑定所有可用的顶点数据,即使着色器不使用它)
.. when linking the program...
glBindAttribLocation(prog, 0, "mg_Position");
glBindAttribLocation(prog, 1, "mg_Color");
glBindAttribLocation(prog, 2, "mg_Normal");
Run Code Online (Sandbox Code Playgroud)
3.来自Material,Engine globals,Renderer和Mesh的可用属性的字典
维护活动材质,引擎全局,当前渲染器和当前场景节点发布的可用属性列表.
例如:
Material has (uniformName,value) = …
Run Code Online (Sandbox Code Playgroud) 我需要评估从服务器传递的自定义函数作为字符串.这是我得到的复杂json的一部分,但无论如何,我似乎需要一些东西:
var customJSfromServer = "return 2+2+2;"
var evalValue = eval(customJSfromServer);
alert(evalValue) ;// should be "6";
Run Code Online (Sandbox Code Playgroud)
显然这不符合我的预期.我能用这种方式做到吗?
有没有人知道是否有可用于.NET的无锁容器库?
最好的东西被证明比我们在.NET中使用的Synchronized包装器更有效.
我在.NET上发现了一些文章,但没有一篇文章指出任何速度基准测试,也没有激发他们对可靠性的信心.
谢谢
.net multithreading synchronization lock-free data-structures
我需要将一个大型CSV文件导入SQL服务器.我正在使用这个:
BULK
INSERT CSVTest
FROM 'c:\csvfile.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
Run Code Online (Sandbox Code Playgroud)
问题是我的所有字段都被引号("")包围,所以一行实际上看起来像:
"1","","2","","sometimes with comma , inside", ""
Run Code Online (Sandbox Code Playgroud)
我可以以某种方式批量导入它们并告诉SQL使用引号作为字段分隔符吗?
编辑:使用'","'作为分隔符的问题,如在建议的示例中那样:大多数示例的作用是,它们是否导入数据,包括第一个"在第一列和最后一个"在最后,然后他们继续把它剥离出来.我的第一个(也是最后一个)列是datetime,不允许将"20080902"导入为datetime.
从我一直在阅读的内容来看,我认为FORMATFILE是可行的方式,但文档(包括MSDN)非常缺乏帮助.
在我使用StackTrace的代码中发生了一些奇怪的事情.这几乎就像没有加载调试信息一样......但是我在DEBUG构建中运行它..pdb文件在bin目录中是最新的并且是最新的.我已经严重失去了思想:
public class TraceHelper
{
private static IDictionary<string,int> TraceDictionary = new Dictionary<string,int>();
public TraceHelper(int duration)
{
...
TraceDictionary[InternalGetCallingLocation()]+=duration;
...
}
public static string InternalGetCallingLocation ()
{
var trace = new System.Diagnostics.StackTrace();
var frames = trace.GetFrames();
var filename = frames[1].GetFileName(); //<<-- this always returns null
return frames[0].ToString(); //this returns:
// "InternalGetCallingLocation at offset 99 in file:line:column <filename unknown>:0:0"
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个SQL 2005表,我们称之为Orders,格式如下:
OrderID, OrderDate, OrderAmount
1, 25/11/2008, 10
2, 25/11/2008, 2
3, 30/1002008, 5
Run Code Online (Sandbox Code Playgroud)
然后我需要生成一个报告表,显示过去7天内每天的订购金额:
Day, OrderCount, OrderAmount
25/11/2008, 2, 12
26/11/2008, 0, 0
27/11/2008, 0, 0
28/11/2008, 0, 0
29/11/2008, 0, 0
30/11/2008, 1, 5
Run Code Online (Sandbox Code Playgroud)
通常会产生这种情况的SQL查询:
select count(*), sum(OrderAmount)
from Orders
where OrderDate>getdate()-7
group by datepart(day,OrderDate)
Run Code Online (Sandbox Code Playgroud)
有一个问题是它会跳过没有订单的日子:
Day, OrderCount, OrderAmount
25/11/2008, 2, 12
30/11/2008, 1, 5
Run Code Online (Sandbox Code Playgroud)
通常情况下,我会使用计数表和外部联接来修复此行,但我真的在寻找更简单或更有效的解决方案.对于报表查询来说,似乎有一个常见的要求,即已经有一些优雅的解决方案可用.
所以:1.这个结果可以从一个简单的查询中获得而不使用计数表吗?
2.如果不是,我们可以动态创建这个计数表(可靠)(我可以使用CTE创建计数表,但递归堆栈将我限制为100行)?
如果JS被禁用,任何从链接提交POST请求的方法?
Ideeas到目前为止(没有一个完美)
对于没有JS的浏览器,我需要一个回退方法,而这些"按钮"的区域对于按钮或图像来说太小了
asp.net ×3
c# ×2
sql ×2
.net ×1
aggregate ×1
asp.net-mvc ×1
bulkinsert ×1
form-submit ×1
forms ×1
glsl ×1
html ×1
html-encode ×1
javascript ×1
lock-free ×1
opengl ×1
reflection ×1
request.form ×1
sockets ×1
sql-server ×1
stack-trace ×1
t-sql ×1
validation ×1