MSDN含糊地提到:
只要未修改集合,ReadOnlyCollection <(Of <(T>)>)可以同时支持多个读取器.即便如此,通过集合枚举本质上不是一个线程安全的过程.为了在枚举期间保证线程安全,您可以在整个枚举期间锁定集合.要允许多个线程访问集合以进行读写,您必须实现自己的同步.
以下公共静态集合是否可以安全地让多个线程进行迭代?如果没有,.NET内置的内容是否安全?我是否应该删除ReadOnlyCollection并为SomeStrings属性getter的每次访问创建一个私有集合的新副本?我知道如果多个线程试图锁定公共集合可能会出现死锁问题,但这是一个内部库,我无法理解为什么我们会想要.
public static class WellKnownStrings {
public static readonly ICollection<string> SomeStrings;
static WellKnownStrings()
{
Collection<string> someStrings = new Collection<string>();
someStrings.Add("string1");
someStrings.Add("string2");
SomeStrings = new ReadOnlyCollection<string>(someStrings);
}
}
Run Code Online (Sandbox Code Playgroud) 作为关于表格单元格中绝对定位的这个问题的后续内容,我正试图在Firefox中使用某些东西.再一次,我大概有95%,并且只有一件小事让我无法宣布胜利.使用以下示例标记:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Test</title>
<style type="text/css">
table { width:500px; border-collapse:collapse}
th, td { border:1px solid black; vertical-align: top; }
th { width:100px; }
td { background:#ccc; }
.wrap { position:relative; height:100%; padding-bottom:1em; background:#aaa; }
.manage { text-align:right; position:absolute; bottom:0; right:0; }
p{ margin: 0 0 5px 0; }
</style>
</head>
<body >
<table>
<tr>
<th>Mauris tortor nulla, sagittis ut, faucibus eu, imperdiet ut, libero.</th>
<td><div class="wrap"><p>Cras diam.</p><div …Run Code Online (Sandbox Code Playgroud) 那么,防止GAE应用程序的XSRF攻击的最佳方法是什么?想象一下:
我可以添加哪些步骤来防止#3?请注意,当我说ID时,我正在使用密钥的实际ID部分.我的一个想法是在删除请求中使用完整的键值,但这会阻止恶意用户能够解决这个问题吗?据我所知,关键是模型类类型,应用程序ID和对象实例ID的某种组合,因此如果他们愿意,他们可能从id派生密钥.
还有其他想法吗?Jeff撰写了一篇关于此的文章,并提出了几个方法 - 一个隐藏的表单值,每个请求都会改变,以及通过js写入表单的cookie值.我不想排除非JavaScript用户,因此cookie解决方案不好 - 对于隐藏的表单值,我必须在显示可删除对象的每个请求上执行数据存储区写入 - 这不是可扩展的理想情况应用程序!
还有其他想法吗?
我一直在研究IKVMing Apache的FOP项目,以便与我们的.NET应用程序一起使用.它是一种商业产品,在研究许可方面,由于使用了GNU Classpath,IKVM遇到了一些棘手的问题.从我所看到的,没有人可以肯定地说这些东西是否可用于商业产品.有没有人在商业产品中使用过IKVM或IKVM产品?这是我到目前为止所发现的:
IKVM许可证页面,其中指出一个DLL包含来自其他项目的代码,其许可证为GPLv2 + Classpath Exception
Saxon for .NET是使用IKVM生成的,但是在Apache许可下发布...
有人有这方面的经验吗?
我有一个表格单元格,我希望其中的div始终位于左下角.以下工作在IE和Safari罚款,但Firefox是定位div绝对的页面上,而不是电池(基于解决方案的解决方案代码中的位置).我已经使用和不使用DTD进行了测试,这使得Firefox处于Quirks模式和标准模式,并且都没有正常工作.我被困 - 任何想法?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Test</title>
<style type="text/css">
table { width:500px; }
th, td { vertical-align: top; border:1px solid black; position:relative; }
th { width:100px; }
.manage { text-align:right; position:absolute; bottom:0; right:0; }
</style>
</head>
<body >
<table>
<tr>
<th>Some info about the following thing and this is actually going to span a few lines</th>
<td><p>A short blurb</p><div class="manage">Edit | Delete</div></td>
</tr>
<tr>
<th>Some info …Run Code Online (Sandbox Code Playgroud) 我有一个包含一些C#代码的WCF服务,它引用了一个C++/CLI dll,它引用了一些本机DLL.我在我的IIS应用程序的bin文件夹中包含所有必需的DLL,但是当IIS加载托管DLL时,它似乎将它们复制到深层目录,如:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\testwcf\73473be6\e625098c\assembly\dl3\aada7c33\85a7332b_2f9acc01
Run Code Online (Sandbox Code Playgroud)
它将每个托管DLL复制到其自己的目录并加载它.当它到达我的C++/CLI DLL时,它将它复制到上面的目录,然后它无法加载依赖项.如果我手动将所有本机DLL复制到此文件夹中,它将运行,但这不是一个很好的解决方案.
我的web.config是VS创建的库存,其端点是根据MSDN文章定义的.
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<services>
<service name="WcfService.Service1">
<endpoint address=""
binding="wsHttpBinding"
contract="WcfService.IService1" />
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
如何自动获取这些DLL?
我有一个保龄球网络应用程序,允许非常详细的逐帧信息输入.它允许的一件事是跟踪每个球被击倒的针脚.要显示此信息,我将其看作是一个针脚架:
o o o o o o o o o o
图像用于表示引脚.所以,对于后排,我有4个img标签,然后是一个br标签.工作得很好......主要是.问题出在小型浏览器中,例如IEMobile.在这种情况下,如果表中可能有10或11列,并且每列中可能有一个引脚架,IE将尝试缩小列大小以适应屏幕,我最终得到类似的东西:
o o o o o o o o o o
要么
o o o o o o o o o o
结构是:
<tr>
<td>
<!-- some whitespace -->
<div class="..."><img .../><img .../><img .../><img .../><br/>...</div>
<!-- some whitespace -->
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
内部div中没有空格.如果您在常规浏览器中查看此页面,它应该显示正常.如果你在IEMobile中看它,它不会.
任何提示或建议?也许是某种 那实际上并没有增加空间?
我收到并尝试了几个很好的建议,包括:
挂着头,嘟something着什么
是的,这是正确的,div顶部的透明gif,大小与我需要的宽度相符.结束代码(简化)如下所示:
<table class="game">
<tr class="analysis leave">
<!-- ... -->
<td> <div class="smallpins"><img class="spacer" src="http://seasrc.th.net/gif/cleardot.gif" /><br/><img src="/img/pinsmall.gif"/><img src="/img/nopinsmall.gif"/><img …Run Code Online (Sandbox Code Playgroud) 我需要一些XSLT语法的帮助.这是我的场景,我有一个XML文件,需要转换为XML文件的不同外观,我有几个部分,如果特定节点集不包含任何值,则不应处理整个部分.
以下是XML的示例:
<Dates>
<Date>
<VALUE1></VALUE1>
<VALUE2></VALUE2>
<VALUE3></VALUE3>
<VALUE4></VALUE4>
<VALUE5>3333</VALUE5>
</Date>
<Date>
<VALUE1>AAAA</VALUE1>
<VALUE2></VALUE2>
<VALUE3>JJJJ</VALUE3>
<VALUE4></VALUE4>
<VALUE5>12345</VALUE5>
</Date>
</Dates>
Run Code Online (Sandbox Code Playgroud)
这是我的XSLT,if语句不能正常工作
<xsl:for-each select="Level1/Level2/Level3">
<xsl:if test="@VALUE1!=''">
<MyDates>
<value_1>
<xsl:value-of select="VALUE1"/>
</value_1>
<value_2>
<xsl:value-of select="VALUE2"/>
</value_2>
<value_3>
<xsl:value-of select="VALUE3"/>
</value_3>
<value_4>
<xsl:value-of select="VALUE4"/>
</value_4>
</MyDates>
</xsl:if>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)
所以你可以看到我基本上希望所有节点(VALUE1,VALUE2,VALUE3等)都有值,否则不处理并转到下一节
(如果你看不到XML的想法,我也做了一个屏幕截图)
救命!我有一个由C#应用程序使用的Axis Web服务.一切都很好,除了长值数组总是遇到[0,0,0,0] - 正确的长度,但值不反序列化.我尝试过其他原语(整数,双打),同样的事情发生了.我该怎么办?我不想改变我的服务的语义.
在编写抛出我在这里询问的异常的代码时,我走到了我的消息的末尾,并在标点符号处停了下来.我意识到几乎所有我抛出的异常消息都可能有!某处.
throw new InvalidOperationException("I'm not configured correctly!");
throw new ArgumentNullException("You passed a null!");
throw new StupidUserException("You can't divide by 0! What the hell were you THINKING??? DUMMY!!!!!");
Run Code Online (Sandbox Code Playgroud)
在编写异常消息时你会采取什么样的语气?在浏览日志时,您是否发现任何特定类型的消息实际上比另一种更有帮助?