我有两节课
public class Document
{
public virtual int Id { get; set; }
public virtual IList<File> Files { get; set; }
}
public class File
{
public virtual int Id { get; protected set; }
public virtual Document Document { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
具有以下约定:
public class HasManyConvention : IHasManyConvention
{
public bool Accept(IOneToManyPart target)
{
return true;
}
public void Apply(IOneToManyPart target)
{
target.Cascade.All();
}
}
Run Code Online (Sandbox Code Playgroud)
和这些映射覆盖
public class DocumentMappingOverride : IAutoMappingOverride<Document>
{
public void Override(AutoMap<Document> mapping)
{
mapping.HasMany(x …Run Code Online (Sandbox Code Playgroud) 我需要一个HttpOnly身份验证cookie来处理:
mydomain.com
www.mydomain.com
abc.mydomain.com
Run Code Online (Sandbox Code Playgroud)
这样我就可以通过一次登录登录所有三个地方.
这可以正常工作,方法是将我的cookie域设置为:
.mydomain.com
Run Code Online (Sandbox Code Playgroud)
这是设置cookie的响应头:
MYAUTHCOOKIE=FOO; domain=.mydomain.com; path=/; HttpOnly
Run Code Online (Sandbox Code Playgroud)
这一切都适用于普通的浏览器请求.
但是,我需要从做一个AJAX请求mydomain.com,并www.mydomain.com给abc.mydomain.com.
当我发出请求时,它没有传递身份验证cookie.为什么这样,我该怎么办呢?
如果我向JS所在页面的同一主机发出请求,它会发送cookie:s
这是我的请求代码:
$.ajax({
type: "POST"
, data: { data: { foo: bar} }
, dataType: "json"
, url: "http://abc.mydomain.com/foo"
, timeout: 5000
, success: function (data, textStatus) {
alert('woo!');
}
, error: function (xhr, textStatus, error) {
alert('meh');
}
});
Run Code Online (Sandbox Code Playgroud)
这是一些跨域政策吗?为什么cookie域不能使这个工作?
谢谢
我想在运行中(即在注册表/配置之外)将一个实例注入到结构映射中,该实例在请求的生命周期中存在.
目前我在做这个HandleBeginRequest的事件IHttpModule:
container.Configure(x => x.For<IMyClass>()
.LifecycleIs(Lifecycles.GetLifecycle(InstanceScope.PerRequest))
.Use(new MyClass()));
Run Code Online (Sandbox Code Playgroud)
但是,如果在应用程序的生命中的某个时刻我做了:
ObjectFactory.WhatDoIHave();
Run Code Online (Sandbox Code Playgroud)
我看到尽可能多的已配置实例IMyClass(或至少有大量数据).
考虑到它,考虑到我的代码,这种方式是有意义的.
有没有更好的方法将实例注入容器中,只是为了当前请求的生命周期,不会污染整个容器?
谢谢
我试图通过翻译我很久以前写的一些Haskell代码来学习F#,但是我被卡住了!
percent :: Int -> Int -> Float
percent a b = (fromInt a / fromInt b) * 100
freqs :: String -> [Float]
freqs ws = [percent (count x ws) (lowers ws) | x <- ['a' .. 'z']]
Run Code Online (Sandbox Code Playgroud)
我已经成功了:
let percent a b = (float a / float b) * 100.
Run Code Online (Sandbox Code Playgroud)
虽然我不喜欢必须拥有.100之后.
我正在执行的操作的名称是什么freqs,以及如何将其转换为F#?
编辑:count和lowers是Char -> String -> Int与String -> Int分别了,我已经翻译这些.
谢谢
我有几个代码方法,如下所示:
using (var connection = this.connectionFactory.GetConnection())
{
connection.Open();
using (var transaction = connection.BeginTransaction())
{
using (var command = connection.CreateCommand())
{
command.Transaction = transaction;
command.CommandText = "foo";
command.ExecuteNonQuery();
transaction.Commit();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我现在需要在外部事务中一起调用这些方法中的几个,所以我这样做了:
using (var transactionScope = new TransactionScope(TransactionScopeOption.RequiresNew))
{
method1();
method2();
method3();
}
Run Code Online (Sandbox Code Playgroud)
但它的做法是:
The operation is not valid for the state of the transaction.
at System.Transactions.TransactionState.EnlistPromotableSinglePhase(InternalTransaction tx, IPromotableSinglePhaseNotification promotableSinglePhaseNotification, Transaction atomicTransaction)
at System.Transactions.Transaction.EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification promotableSinglePhaseNotification)
at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx)
at System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx)
at System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction)
at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction)
at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) …Run Code Online (Sandbox Code Playgroud) 只是为了澄清,因为我无法在标题中找到足够的信息......
我正在做一个跨站请求并坚持CORS,这一切都有效.浏览器发送一个选项请求,我的服务响应一堆接受标题,然后浏览器接受200响应并发送帖子.如果您不需要任何信息,请随意跳过标题输出:
初始选项请求:
OPTIONS http://localhost:1837/authentication HTTP/1.1
Host: localhost:1837
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Origin: http://localhost:6879
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with
Pragma: no-cache
Cache-Control: no-cache
Run Code Online (Sandbox Code Playgroud)
选项回应:
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Thu, 30 Jun 2011 09:50:43 GMT
X-AspNet-Version: 4.0.30319
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Max-Age: 1000
Access-Control-Allow-Headers: CONTENT-TYPE, x-requested-with
Access-Control-Allow-Origin: http://localhost:6879
X-AspNetMvc-Version: 3.0
Cache-Control: private
Content-Length: 0
Connection: Close
Run Code Online (Sandbox Code Playgroud)
发布请求:
POST http://localhost:1837/authentication HTTP/1.1 …Run Code Online (Sandbox Code Playgroud) 我有一个可以被多个线程访问的类的实例.
在这个类中是一个[ThreadStatic]存储各种对象的变量.
我现在需要我的类的第二个实例,我希望它在其中有一个单独的对象存储.
目前,同一线程中的两个实例将共享同一个对象库.我不想要这个.
我能想到的唯一解决方案是:
有一个静态IDictionary<int, TObjectStore>,其中int是线程ID,并通过一些方法或getter访问:
static TObjectStore ObjectStore {
get {
// create the instance here if its the first-access from this thread, with locking etc. for safety
return objectStore[Thread.CurrentThread.Id];
}
}
Run Code Online (Sandbox Code Playgroud)
但问题是如何TObjectStore在特定线程结束时处理它?我认为我正确地假设在目前的实施中,GC会简单地拿起它?
谢谢
我目前(概念上)有:
IEnumerable<Tuple<long, long, Guid>>
Run Code Online (Sandbox Code Playgroud)
给定一个long,我需要找到"对应的" GUID.
longs 对不应重叠,尽管对之间可能存在间隙,例如:
1, 10, 366586BD-3980-4BD6-AFEB-45C19E8FC989
11, 15, 920EA34B-246B-41B0-92AF-D03E0AAA2692
20, 30, 07F9ED50-4FC7-431F-A9E6-783B87B78D0C
Run Code Online (Sandbox Code Playgroud)
对于每个输入long,应该有完全匹配0或1匹配的GUIDs.
所以输入7,应该返回366586BD-3980-4BD6-AFEB-45C19E8FC989
输入16应该返回null
更新:我有大约90K对
我应该如何将其存储在内存中以便快速搜索?
谢谢
我读过这篇文章:从多个线程等待同一任务可以吗-等待线程安全吗?我对答案不清楚,所以这里有一个特定的用例。
我有一种执行一些异步网络I / O的方法。多个线程可以立即使用此方法,我不需要它们全部调用网络请求,如果一个请求已经在进行中,我想阻止/等待第二个以上线程,并在一次IO操作后让它们全部恢复已经完成。
我应该如何编写以下伪代码?我猜每个调用线程真正需要得到它自己的Task,所以每个人都可以得到它自己的延续,所以不是返回的currentTask我应该回到一个新的Task,其完成了由“内” Task的DoAsyncNetworkIO。有没有一种干净的方法可以做到这一点,或者我必须手动滚动它?
static object mutex = new object();
static Task currentTask;
async Task Fetch()
{
lock(mutex)
{
if(currentTask != null)
return currentTask;
}
currentTask = DoAsyncNetworkIO();
await currentTask;
lock(mutex)
{
var task = currentTask;
currentTask = null;
return task;
}
}
Run Code Online (Sandbox Code Playgroud) 我读过这个,https ://docs.microsoft.com/en-us/azure/devops/pipelines/repos/pipeline-options-for-git?view = azure-devops 但作为一个 Azure 初学者它不是很有帮助.
我在 GitHub 中有两个存储库,一个通过子模块引用另一个。我已授予 Azure Pipelines 访问 GitHub 中两个存储库的权限。
我已经按照入门指南制作了一个新管道,并将它添加azure-pipelines.yml到我的存储库中。它看起来像这样:
# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core
trigger:
- master
pool:
vmImage: 'windows-latest'
variables:
solution: '**/*.sln'
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
steps:
- task: NuGetToolInstaller@1
- task: NuGetCommand@2
inputs:
restoreSolution: '$(solution)'
- task: VSBuild@1
inputs:
solution: …Run Code Online (Sandbox Code Playgroud) c# ×5
ajax ×2
jquery ×2
.net ×1
async-await ×1
asynchronous ×1
azure-devops ×1
cookies ×1
cors ×1
cross-domain ×1
f# ×1
haskell ×1
structuremap ×1
syntax ×1
transactions ×1