当Teamcity运行启动自托管Web应用程序的集成测试时,测试将失败并显示错误:
System.MissingMemberException: The server factory could not be located for the given input: Microsoft.Owin.Host.HttpListener
Run Code Online (Sandbox Code Playgroud)
抛出此错误的代码是:
var webApp = WebApp.Start<Startup>("http://*:52203/")
Run Code Online (Sandbox Code Playgroud)
使用Visual Studio(使用Resharper测试运行器)执行测试时运行正常.Teamcity配置为使用JetBrains.BuildServer.NUnitLauncher.exe可执行文件来运行测试.
我看到很多关于这个错误的帖子与Microsoft.Owin.Host.HttpListener.dllbin 有关,因为bin\debug或bin\release文件夹中没有.我可以确认此文件(以及随附的.xml文件)都存在于TeamCity buildAgent使用的bin\release文件夹中.没有bin\debug文件夹.
我正在尝试使用angular-ui设置表单验证.我想在提交之前检查表单是否有效,所以我已经设置了一个ng-submit事件处理程序.
但在实现任何验证之前,我注意到即使不提交表单也会调用事件处理程序.在下面的示例中,单击Add Item按钮时会调用它:
<div ng-app="app">
<div ng-controller="ctrl">
<form name="myForm" ng-submit="sub()" novalidate>
<div ng-repeat="item in items">
<ng-form name="row">
<input type="text" name="value" ng-model="item.value" required />
</ng-form>
</div>
<button ng-click="addItem()">Add Item</button>
<input type="submit" value="Submit"/>
</form>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
和JS:
var app = angular.module('app', ['ng']);
app.controller('ctrl', ['$scope', function($scope) {
$scope.items = [];
$scope.addItem = function() {
$scope.items.push({ value: $scope.items.length });
};
$scope.sub = function() {
alert("submitted?");
};
}]);
Run Code Online (Sandbox Code Playgroud)
看到我的小提琴:
这应该发生吗?我觉得ng-submit不仅仅是在表单提交上被解雇了......我做错了吗?
我相信读取Outlook .msg文件(为了获取主题,附件等额外元数据)的唯一方法是使用Outlook API - Application.Session.OpenSharedItem()方法.
如果是这种情况,那么我正在寻找在我们的应用服务器上运行此代码的方法,该服务器没有安装MS OFfice或MS Outlook.我收到了错误
System.ArgumentException: progId not found. Outlook.Application
Run Code Online (Sandbox Code Playgroud)
这当然是由于缺少Outlook应用程序.
有没有办法只安装一个DLL或什么,以使OpenSharedItem方法工作?如果可能的话,我不想安装完整的客户端.
或者,有没有办法解析.msg文件而不需要像Outlook这样的重要依赖项?
我在同一个IIS(不同的上下文根)上托管了几个应用程序,这些应用程序都使用Microsoft.ASPNet.Identity 2.1 NuGet包进行保护.但是,当我登录其中一个应用程序时,下次访问任何其他应用程序会提示我再次登录.我不能同时登录其中一个应用程序.
我猜他们都使用相同的cookie来存储登录令牌,所以当你登录一个应用程序时,它会重置cookie,这对于对其他应用程序的请求变得无效.
我有什么选择解决这个问题?我不介意必须单独登录每个应用程序,因此每个应用程序是否可以配置为使用不同的cookie?
或者,每个应用程序实际上在数据库中共享相同的用户表,因此可以对其进行配置,以便在您登录其中一个应用程序时,其他应用程序也会登录.
在执行Quartz.Net作业实现期间,通过Ninject依赖解析器实例化的DbContext实现使用的最佳范围是什么?如果我使用了线程范围,如果使用Quartz线程池中的相同线程多次执行作业,是否会提供相同的DbContext实例?
我想要一个范围,这意味着每次触发作业时我都会获得一个(并且只有一个)DbContext的新实例.
将一个git分支合并到另一个git分支时,合并冲突的常见来源是我的一个XML文件,其中在两个分支上的文件的同一插入点处添加了新的(但不同的)XML.在我的情况下,我希望git在合并结果中自动包含来自两个分支的新插入的XML,并且我不关心哪个分支的更改插入到另一个上面.
是否可以配置git来执行此操作?
编辑:我发现我可以放线:
*.xml merge=union
Run Code Online (Sandbox Code Playgroud)
进入.gitattributes文件 - 但这不是我想要的方式.
在我的工作分支上说,这个XML已被添加:
<itemlist id="1">
<item id="1"></item>
</itemlist>
Run Code Online (Sandbox Code Playgroud)
然后在我打算合并到我的分支上,已添加 - 在完全相同的位置:
<itemlist id="2">
<item id="2"></item>
</itemlist>
Run Code Online (Sandbox Code Playgroud)
然后,git注意到两组更改都以相同的文本结尾(即带有结束标记的行).它似乎认为,因为双方都添加了相同的文本,它不应该在合并中复制该文本,因此它只会在合并期间插入以下内容:
<itemlist id="2">
<item id="2"></item>
Run Code Online (Sandbox Code Playgroud)
这当然导致无效的XML.
我是否可以采取进一步的配置来关闭这个"仅仅合并 - 更改 - 那些不是也在改变工作分支"选项吗?
.net ×1
angularjs ×1
asp.net-mvc ×1
c# ×1
com ×1
dbcontext ×1
git ×1
git-merge ×1
ninject ×1
outlook ×1
owin ×1
quartz.net ×1
self-hosting ×1
teamcity ×1
xml ×1