的背景:
我在负载均衡器后面的IIS 7.0上托管了一个服务,它在流量通过时解密SSL.
服务所需的安全模式是混合模式,即TransportWithMessageSecurity
为了使服务能够接受HTTP流量,同时允许客户端通过SSL与Load Balancer进行通信,我创建了一个用户定义绑定,它将自定义HttpTransportBindingElement添加到其通道堆栈.
自定义HttpTransportBindingElement依次向框架声明它能够加密和签名消息......因此,当流量通过HTTP进入时,Framework不会抱怨,因为Transport声称它正在签名/加密消息. ..即使不是.
(对于所有相关人员,这已被确定为可接受的安全性,因为消息或者应该通过SSL到达负载均衡器......)
问题:
当我们使用svcutil.exe生成客户端代理时,生成的自动生成的app.config文件包含通过HTTP寻址的服务的端点.这应该通过HTTPS.
此外,<customBinding>节点中的<transport>元素在需要是<httpsTransport>元素时定义为<httpTransport>元素.
我怀疑这是因为使用自定义HttpTransportBindingElement(如上所述),由服务器上的框架生成的WSDL依次使用HTTP地址而不是HTTPS>构建.
自动生成的客户端app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="myBindingEndpoint">
<!-- WsdlImporter encountered unrecognized policy assertions in ServiceDescription 'http://tempuri.org/': -->
<!-- <wsdl:binding name='myBindingEndpoint'> -->
<!-- <sp:HttpToken xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">..</sp:HttpToken> -->
<security defaultAlgorithmSuite="Default" authenticationMode="CertificateOverTransport"
requireDerivedKeys="true" securityHeaderLayout="Strict" includeTimestamp="true"
keyEntropyMode="CombinedEntropy" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10">
<localClientSettings cacheCookies="true" detectReplays="false"
replayCacheSize="900000" maxClockSkew="00:05:00" maxCookieCachingTime="Infinite"
replayWindow="00:05:00" sessionKeyRenewalInterval="10:00:00"
sessionKeyRolloverInterval="00:05:00" reconnectTransportOnFailure="true"
timestampValidityDuration="00:05:00" cookieRenewalThresholdPercentage="60" />
<localServiceSettings detectReplays="false" issuedCookieLifetime="10:00:00"
maxStatefulNegotiations="128" replayCacheSize="900000" maxClockSkew="00:05:00"
negotiationTimeout="00:01:00" replayWindow="00:05:00" inactivityTimeout="00:02:00"
sessionKeyRenewalInterval="15:00:00" …Run Code Online (Sandbox Code Playgroud) 我有以下模型:
public class Resource
{
[DataMember(IsRequired = true)]
[Required]
public bool IsPublic { get; set; }
[DataMember(IsRequired = true)]
[Required]
public ResourceKey ResourceKey { get; set; }
}
public class ResourceKey
{
[StringLength(50, MinimumLength = 1)]
[Required]
public string SystemId { get; set; }
[StringLength(50, MinimumLength = 1)]
[Required]
public string SystemDataIdType { get; set; }
[StringLength(50, MinimumLength = 1)]
[Required]
public string SystemEntityType { get; set; }
[StringLength(50, MinimumLength = 1)]
[Required]
public string SystemDataId { get; set; } …Run Code Online (Sandbox Code Playgroud) 我正在使用具有客户端处理功能的DataTables 1.10.9。
我正在使用“ ajax”选项来检索DataTable的数据。
我在“ render ”函数中放了一个小的console.log(renderCount)。
表中有4,921行。
但是,控制台显示渲染功能总共被调用了14,772次!
(14,772 =行数* 3 + 11)
我相信这会减慢渲染过程。
而且-我设置了' deferRender '选项-因此我以为render函数应该只调用10次,这是默认的页面大小。
这是怎么回事?
除了服务器端处理外,如何改善此表的初始渲染性能?
这是一行数据的示例:
{
Id: 1,
Type: "Purchases",
LifecycleStatus: "Manual",
ReceivedAtLocal: "04/02/2016 20:45:16",
ModifiedAtLocal: "04/02/2016 21:45:16",
Operator: "a-mjohn",
PartNumber: "IXAWGCAUNVJHONP"
}
Run Code Online (Sandbox Code Playgroud)
这是表定义代码:
var renderCount = 0;
transactionTable = $("#tblTransactions").DataTable({
"searchDelay" : 500,
"bDestroy": true,
"ajax": window.getTransactionDataUrl,
"processing": false,
"deferRender" : true,
"columns": [
{
'render': function (data, type, full, meta){
// Other code omitted for brevity
renderCount++;
console.log(renderCount);
return "";
}, …Run Code Online (Sandbox Code Playgroud) 我有以下简单形式,其中type ='email'输入绑定到模型:
<div ng-app>
<h2>Clearing ng-model</h2>
<div ng-controller="EmailCtrl">
<form name="emailForm" ng-submit="addEmail()">
<input type="email" name="email" ng-model="userEmail" placeholder="email@domain.com">
<span ng-show="emailForm.email.$invalid && emailForm.email.$dirty">invalid email</span>
<span ng-show="emailForm.$invalid">form invalid!</span>
</form>
<br/>
<button ng-click="clearViaUndefined()">clear via undefined</button>
<button ng-click="clearViaNull()">clear via null</button>
<button ng-click="clearViaEmptyString()">clear via empty string</button>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
假设用户输入了无效的电子邮件,然后单击"取消"按钮...因此需要重置表单.
在"取消"按钮的ng-click处理程序中,如果我将模型的值设置为"undefined",则不会将输入元素的$ valid属性更改回true(也不是表单的形式).
function EmailCtrl($scope) {
$scope.clearViaUndefined = function () {
$scope.userEmail = undefined;
};
$scope.clearViaNull = function () {
$scope.userEmail = null;
};
$scope.clearViaEmptyString = function () {
$scope.userEmail = "";
};
}
Run Code Online (Sandbox Code Playgroud)
如果我将模型的值设置为空字符串""或null,则$ valid属性确实设置为true.
为什么是这样?
我在这里有一个JS小提琴演示了这种行为:
我在目标项目中有一个.config,我需要通过MSBuild任务以编程方式添加一行.
Pseduo运营如:
$ TargetProjectDir\Config\packages.config中的.config文件:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ABC" version="1.1.0.4" />
<package id="XYZ" version="2.0.0.0" />
</packages>
Run Code Online (Sandbox Code Playgroud)
之后需要看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ABC" version="1.1.0.4" />
<package id="XYZ" version="2.0.0.0" />
<package id="CarDataWidget" version="3.0.0.0" />
</packages>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经考虑过使用"内联任务","执行"任务和"XmlPoke"任务,但还没有设法让任何一个工作.
这是我对XmlPoke和XmlPeek的尝试:
我使用以下文章作为如何将节点添加到packages.config文件的灵感:http: //weblogs.asp.net/bsimser/appending-nodes-in-xml-files-with-xmlpeek-and-xmlpoke-使用-恶性
<Target Name="AfterBuild" DependsOnTargets="AddPackage">
</Target>
<Target Name="AddPackage">
<!-- Load existing nodes into a Property -->
<XmlPeek XmlInputPath="config/packages.config" Query="/packages/package" >
<Output TaskParameter="Result" PropertyName="Peeked" />
</XmlPeek>
<Message Text="From Peek: $(Peeked)"></Message>
<!-- Load new node into Property -->
<PropertyGroup> …Run Code Online (Sandbox Code Playgroud) 我需要为一个由模板生成的类注册一个事件处理程序 - 在EntityFramework中的T4模板.
目前,我们编辑了生成的代码,以在生成的类(模型上下文)的构造函数中注册处理程序.
当前代码:
public MyAppContext(string connectionString)
: base(connectionString, ContainerName)
{
this.ContextOptions.LazyLoadingEnabled = true;
// Register the event handler
this.Connection.StateChange += Connection_StateChange;
}
Run Code Online (Sandbox Code Playgroud)
问题是,如果将来重新生成代码,那么上面的代码将被破坏,事件处理程序将不再被连接......
代码重新生成从最小的事情自动发生,例如打开EF Designer并在画布上移动表格!因此,我们不要依赖于将自定义代码留在生成的类中.
无论如何我们可以将注册放在一个部分类中,并保持生成的代码不变?
EG是否存在某种事件,一旦调用构造函数,它将始终被触发?
我有一个复杂的数据结构,带有嵌套数组,我需要使用不区分大小写的搜索来查找带有字符串值的元素.
我已经开始使用lodash由于简单的语法来执行嵌套查询 - 它工作得很好,但搜索区分大小写.
我想找到一个"address_components"元素,其"types"值为"route","long_name"值等于一个名为"targetStreet"的参数.
这是我到目前为止的lodash代码:
var result = _.find(geocodeResult,
{
'address_components': [
{
types: ['route'],
'long_name': targetStreet
}
]
});
Run Code Online (Sandbox Code Playgroud)
问题: 如何使"long_name"属性的匹配不区分大小写?
下面是'geocodeResult'数据结构(它实际上是Google地理编码结果对象)的示例.
请注意,此数据结构是动态的... Google会返回最具体的结果,但如果找不到街道的匹配项,那么它就不会返回街道组件,例如"address_components"中的"types"数组具有非确定性值.
[
{
"address_components": [
{
"long_name": "V&a Lane",
"short_name": "V&a Ln",
"types": [
"route"
]
},
{
"long_name": "Coonawarra",
"short_name": "Coonawarra",
"types": [
"locality",
"political"
]
},
{
"long_name": "Wattle Range Council",
"short_name": "Wattle Range",
"types": [
"administrative_area_level_2",
"political"
]
},
{
"long_name": "South Australia",
"short_name": "SA",
"types": [
"administrative_area_level_1",
"political"
]
},
{ …Run Code Online (Sandbox Code Playgroud) 的背景:
我有以下WriteFileToStream函数,用于完成一个简单的工作:从文件中获取数据并将其复制到Stream.
我最初使用的是Stream.CopyTo(Stream)方法.但是,经过漫长的调试过程后,我发现这是导致我的处理管道中出现"损坏数据"错误的原因.
概要:
使用Stream.CopyTo(Stream)方法产生65536个字节的数据,并且流不能正确处理.
使用Stream.Write(...)方法可以生成45450个字节的数据,并且流正确处理.
问题:
任何人都可以看到为什么以下使用CopyTo可能导致无关数据被写入流?
请注意:WriteFileToStream中的最终代码取自对此问题的回答:将MemoryStream保存并加载到文件中
public static void WriteFileToStream(string fileName, Stream outputStream)
{
FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read);
long fileLength = file.Length;
byte[] bytes = new byte[fileLength];
file.Read(bytes, 0, (int)fileLength);
outputStream.Write(bytes, 0, (int)fileLength);
file.Close();
outputStream.Close();
// This was corrupting the data - adding superflous bytes to the result...somehow.
//using (FileStream file = File.OpenRead(fileName))
//{
// //
// file.CopyTo(outputStream);
//}
}
Run Code Online (Sandbox Code Playgroud) c# ×2
javascript ×2
angularjs ×1
datatables ×1
filestream ×1
forms ×1
jquery ×1
json.net ×1
lodash ×1
msbuild ×1
msbuild-task ×1
ssl ×1
svcutil.exe ×1
validation ×1
wcf ×1
xmlpoke ×1