我有一个WCF服务,通过IIS在多个Web服务器上托管.我有一个记录方法,记录对数据库的调用,我想记录正在执行调用的服务器.
有谁知道如何获取WCF调用正在执行的主机服务器名称或IP地址?
考虑使用此标头的Web响应:
Set-Cookie: sample=testCookie; Domain=.sample.com; Expires=Tue, 25-Jan-2012 00:49:29 GMT; Path=/
Run Code Online (Sandbox Code Playgroud)
此标头将被映射到CookieCollection在.NET.而且当我们处理CookieCollection它时它最终会转换成这样的header string.
我正在寻找某种方式纯粹以两种方式进行这种转换.肯定.NET有它的内部库.我相信任何从文本构造对象模型的类,反之亦然,应该支持两种方法(这里CookieCollection):
// Creating cookie collection from header text
CookieCollection.TryParse(cookieHeaderString, out myCookieCollection);
// and getting the final header which would be sent by request
String cookieHeaderString = myCookieCollection.GetCookieHeaderString();
Run Code Online (Sandbox Code Playgroud)
我怎样才能实现这一目标CookieCollection?
我正在使用linq过滤选择的MessageItems.我编写的方法接受一堆可能为null的参数.如果它们为null,则应忽略该文件的条件.如果它不为null,则使用它来过滤结果.
这是我的理解,当做一个|| operation是C#,如果第一个表达式为true,则不应计算第二个表达式.
例如
if(ExpressionOne() || ExpressionTwo())
{
// only ExpressionOne was evaluated because it was true
}
Run Code Online (Sandbox Code Playgroud)
现在,在linq,我正在尝试这个:
var messages = (from msg in dc.MessageItems
where String.IsNullOrEmpty(fromname) || (!String.IsNullOrEmpty(fromname) && msg.FromName.ToLower().Contains(fromname.ToLower()))
select msg);
Run Code Online (Sandbox Code Playgroud)
我原本以为这会是合理的,因为它String.IsNullOrEmpty(fromname)等于是真的和||的第二部分 不会跑.
然而它确实运行了,第二部分
msg.FromName.ToLower().Contains(fromname.ToLower()))
Run Code Online (Sandbox Code Playgroud)
抛出一个空引用异常(因为fromname为null)!! - 我得到一个经典的"对象引用没有设置为对象的实例"异常.
有帮助吗?
我正在使用Ninject.Extensions.Factory和Ninject 3创建一个工厂,它IFoo根据提供给工厂的字符串创建不同类型的工厂.我有一个通过单元测试,但奇怪的是,只有在Resharper测试运行器.在NCrunch测试运行器中,它失败了.这是一个NCrunch配置问题,还是我需要更改代码?
界面:
public interface IFooFactory
{
IFoo CreateFoo(string name);
}
Run Code Online (Sandbox Code Playgroud)
Ninject绑定:
kernel.Bind<IFooFactory>().ToFactory(() => new UseFirstParameterAsNameInstanceProvider());
kernel.Bind<IFoo>().To<BarFoo>().Named("Bar");
Run Code Online (Sandbox Code Playgroud)
考试:
[Test]
public void CanCreateFooTest()
{
var factory = (IFooFactory) Kernel.GetService(typeof(IFooFactory));
var bar = factory.CreateFoo("Bar");
Assert.AreEqual(typeof(BarFoo), bar.GetType());
}
Run Code Online (Sandbox Code Playgroud)
和NCrunch异常:
System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
----> Ninject.ActivationException : Error activating IInterceptor using conditional implicit self-binding of IInterceptor
Provider returned null.
Activation path:
2) Injection of dependency IInterceptor into parameter of constructor of type IFooFactoryProxy
1) …Run Code Online (Sandbox Code Playgroud) 给出以下Razor代码:
<tbody>
@foreach (Profession profession in Model)
{
<tr>
<td>@profession.Name</td>
<td>@profession.PluralName</td>
<td>@Html.ActionLink("Edit", "AddOrEdit", new { Id = profession.ProfessionID })</td>
</tr>
}
</tbody>
Run Code Online (Sandbox Code Playgroud)
提供某种替代行样式的最简单方法是什么?(即奇数行和偶数行的不同样式.)
我似乎无法添加任意C#来声明一个bool变量,该变量在foreach循环的每次迭代中被翻转以便tr为例如设置类名.
我有一个带有WebAPI控制器的ASP.NET MVC应用程序,以及一个使用这些控制器的控制台应用程序.控制台应用程序从计划任务运行,从远程源获取数据,解析它,并在退出之前将其发布到MVC应用程序.
这适用于几个控制器,但其中一个调用会使控制台应用程序崩溃而不会抛出异常.用于所有控制器的调用者代码:
public async Task<string> Post<T>(string urlRoot, string url, T data)
{
var result = "";
try
{
var httpClient = GetHttpClient(urlRoot);
var response = await httpClient.PostAsJsonAsync(url, data); // Exits here
if (response.IsSuccessStatusCode)
{
result = await response.Content.ReadAsAsync<string>();
}
}
catch (Exception e)
{
Debug.WriteLine(e.ToString());
}
return result;
}
Run Code Online (Sandbox Code Playgroud)
程序退出时会退出await httpClient.PostAsJsonAsync(url, data).使用断点,既没有到达catch块也没有到达if语句.然而,正在进行调用,因为正在使用正确的数据调用Web API控制器.
程序共享T通过API调用传递的相同代码.
从输出窗口:
程序'[9640] ProgramName.vshost.exe:Managed(v4.0.30319)'已退出,代码为0(0x0).
我想知道发布数据的大小是否有问题,但我没有找到任何说明大小限制的文档.
所以我的问题是:
好吧,假设我有一系列n个 XHR请求:
var promises = [];
var AllResults = [];
$scope.requests = [
{
"uri":"http://foo/bar/action1",
"name":"Action1"
},{
"uri":"http://bar/foo/action2",
"name":"Action2"
},{...},{...},{...}
];
var ParseMyResultsArray = function(){
console.log(AllResults);
//...
};
angular.forEach($scope.requests, function(request){
var promise = $http.get(request.uri);
promises.push(promise);
});
angular.forEach(promises, function(promise){
promise.then(function(results){
AllResults.push(results);
});
});
//Then, when all promise are resolved...
ParseMyResultsArray();
Run Code Online (Sandbox Code Playgroud)
ParseMyResultsArray()如果在不知道requests阵列大小的情况下解决所有承诺,我怎么能确定打电话?
谢谢你的帮助!
我们正在开发一个ASP.NET MVC应用程序,它当前使用它自己ApplicationData的域模型数据库,另一个Membership用于用户管理/成员资格提供程序.
我们data-annotations在控制器中使用访问限制.
[Authorize(Roles = "administrators, managers")]
Run Code Online (Sandbox Code Playgroud)
这对于简单的用例非常有用.
在我们扩展应用程序时,我们的客户希望限制specific users访问我们ApplicationData数据库的特定区域.
我们的每个产品都包含一个外键,指的是产品组装的区域.
用户故事将是:
我们创建了一个UserRightsRegions包含UserId和的占位符表RegionId.
我怎样才能链接均ApplicationData与Membership以数据库正常工作/有cross-database-key-references?(这样的事情甚至可能吗?)
所有帮助都非常感谢!
这是我的问题,我想跟踪用户是在线还是离线,并通知其他客户.我正在使用集线器并实现了IConnected和IDisconnect接口.
我的想法是当集线器检测到连接或断开连接时向所有客户端发送通知.默认情况下,当用户刷新页面时,他将获得新的连接ID,并且最终先前的连接将调用disconnect以通知其他客户端用户即使他实际上在线也处于脱机状态.
我试图使用我自己的ConnectionIdFactory返回用户名的连接ID,但是在某些时候打开了多个标签,它会检测到用户连接断开连接,之后客户端集线器将尝试无限循环地连接到集线器,浪费内存和cpu使浏览器差不多无法使用.我需要快速修复它,所以我删除了我的工厂,现在我使用用户名添加每个新连接到组,所以我可以轻松地通知所有连接上的单个用户,但是我有检测用户是在线还是离线的问题,因为我不知道用户有多少活动连接.
所以我想知道有没有办法在一个组中获得连接数?或者,如果有人更好地了解如何跟踪用户何时下线?
我正在使用Signalr 0.4
c# ×4
asp.net-mvc ×2
.net ×1
angularjs ×1
asp.net ×1
c#-3.0 ×1
coding-style ×1
cookies ×1
http-headers ×1
linq ×1
linq-to-sql ×1
ncrunch ×1
ninject ×1
ninject-3 ×1
null ×1
promise ×1
razor ×1
signalr ×1
sql-server ×1
unit-testing ×1
wcf ×1