我们有一个相当复杂的Visual Studio解决方案(57个项目,其中19个是几乎每次都是在推送代码时触发的网站,但随后我们手动触发构建并重试它构建得很好.
该解决方案包含57个项目,其中19个是网站项目.(不是Web应用程序项目,没有.csproj文件.)其余的是类库和后台作业.这19个网站项目在IIS虚拟目录中构建成一个大型多功能内容管理系统.
构建服务器是Hudson v1.395.用于构建的命令是:
"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.com" "SolutionName.sln" /rebuild Debug
Run Code Online (Sandbox Code Playgroud)
当构建失败时,它始终在完全相同的网站项目上执行此操作,并使用完全相同的消息:
------ Rebuild All started: Project: C:\...\WebsiteName\, Configuration: Debug Any CPU ------
Validating Web Site
: Build (web): The application domain in which the thread was running has been unloaded.
Validation Complete
Run Code Online (Sandbox Code Playgroud)
目前,Google搜索此邮件的帮助不大.此链接最接近实际问题但没有解决方案.显然,我们不会在构建期间更改任何解决方案文件,因为它发生在构建服务器上.
当它失败时,我们手动触发构建,并且我们得到了预期(抱歉,编辑):
------ Rebuild All started: Project: C:\...\News2\, Configuration: Debug Any CPU ------
Validating Web Site
Building directory '/WebsiteName/Dir1/Dir2/'.
Building directory '/WebsiteName/'.
Building directory '/WebsiteName/Dir3/'.
// 22 more but you get …Run Code Online (Sandbox Code Playgroud) msbuild build-automation continuous-integration hudson visual-studio-2010
我们已经为一组NServiceBus服务聚集了MSMQ,一切都运行良好,直到它没有.一台服务器上的传出队列开始填满,很快整个系统都挂起了.
更多细节:
我们在服务器N1和N2之间有一个集群MSMQ.其他群集资源只是作为本地(即NServiceBus分发服务器)直接在群集队列上运行的服务.
所有工作进程都位于不同的服务器上,即Services3和Services4.
对于那些不熟悉NServiceBus的人来说,工作会进入由经销商管理的集群工作队列.Service3和Services4上的工作程序应用程序将"我准备工作"消息发送到由同一分发服务器管理的集群控制队列,并且分发服务器通过将一个工作单元发送到工作进程的输入队列来响应.
在某些时候,这个过程可以完全挂起.下面是系统挂起时集群MSMQ实例上的传出队列的图片:

如果我将群集故障转移到另一个节点,就像整个系统在裤子中得到了一些好处.以下是故障转移后不久的同一群集MSMQ实例的图片:

任何人都可以解释这种行为,以及我可以做些什么来避免它,以保持系统平稳运行?
我们的服务器位于域中的服务器场.我们称之为LIVE.
我们的开发人员计算机位于一个完全独立的公司域中,距离数英里.我们称之为CORP.
我们有一个大型中央存储单元(unix),用于存放服务器场中许多Web服务器所需的映像和其他介质.IIS应用程序池作为(比方说)LIVE\MediaUser运行,并使用这些凭据作为虚拟目录连接到中央存储共享,检索映像,并像在每台服务器上本地一样提供服务.
问题在于发展.
在我的开发机器上.我以CORP\MyName身份登录.我的IIS 6应用程序池作为网络服务运行.我无法从LIVE域以用户身份运行它,因为我的机器没有(也不能)加入该域.
我尝试创建一个虚拟目录,将其指向同一个网络目录,单击"连接为",取消选中"在验证对网络目录的访问权限时始终使用经过身份验证的用户的凭据"复选框,以便我可以输入登录信息,输入凭据对于LIVE\MediaUser,单击"确定",验证密码等.
这不起作用.我从IIS获得"HTTP错误500 - 内部服务器错误".
IIS日志文件报告sc-status = 500,sc-substatus = 16和sc-win32-status = 1326.
文档说这意味着"UNC授权凭据不正确",Win32状态意味着"登录失败:未知用户名或密码错误".
如果它接近准确的话,这将是全部和好的.我加倍检查并进行故障检查.尝试了多个已知的良好登录.IIS管理器允许我在其窗口中查看文件树,它只是将我踢出去的浏览器.
我甚至尝试进入虚拟目录的"目录安全性"选项卡,在"身份验证和访问控制"下,我尝试使用相同的LIVE域用户名进行匿名访问凭据.没运气.
我不是试图从虚拟目录中运行任何ASP,ASP.NET或其他动态的东西.我只是希望IIS能够加载静态图像,css和js文件.
如果有人有一些好主意,我会非常感激!
我想在我们的网站中添加一些jQuery功能,其中一个标记将有一个点击处理程序,需要在另一个标记上执行操作,即A是来自B的操作的触发器.不能保证相对A和B的结构,所以我不能依赖于jQuery选择器,加上每个唯一的A只需要与其独特的对应关系B.
在这种情况下进行最佳方式的一般共识是什么?
选项1:谁关心XHTML合规性,无论如何都被高估了.我们有未经训练的网络内容制作者,无论如何能够将标记注入我们的网站,因此严格的XHTML合规性将成为一个梦想.只需构建标记属性并使用jQuery读取它们的值.
Example:
<div class="jquery-feature-trigger" actson="targetID">Trigger</div>
Run Code Online (Sandbox Code Playgroud)
选项2:使用看起来像HTML的属性,但不应该真正用于此目的.
Example:
<div class="jquery-feature-trigger" rel="targetID">Trigger</div>
Run Code Online (Sandbox Code Playgroud)
选项3:使用像ASP.NET 4.0这样的命名空间.
Example:
<div class="jquery-feature-trigger" custom:actson="targetID">Trigger</div>
Run Code Online (Sandbox Code Playgroud)
如果你想推荐选项3,我会很感激为了让它工作所需要的链接,因为我真的不知道是否必须制作DTD或如何链接它.
选项4: Stack Overflow社区有一个更好的主意...... ???
假设有人为JavaScript Intellisense正确设置了Visual Studio 2008,那么实际的javascript引用声明的最佳实践是什么?
当然,基本形式是(在文件的顶部):
///<reference path="path-to-file.js" />
Run Code Online (Sandbox Code Playgroud)
但这条道路的规则是什么?
WEBAPPS
Web应用程序是否应该像网址一样使用正斜杠?"filename.js"用于同一目录中的文件?"./filename.js"?根相对"/path/to/filename.js"?所有这些都应该有效吗?像"../../filename.js"这样的相对路径是否有效?
类库
在构建嵌入式资源.js文件的类库时怎么样?它们应该像Windows文件路径一样使用反斜杠吗?转换为.NET字符串文字中的双反斜杠?
当webapp中的.js文件引用类库中的文件时怎么办?在开发插件时通常会出现这种情况 - 您有一组现有插件,并且您在Web上下文中开发了一个新插件,因此您不必继续重建类库,然后在完成后你将它移动到类库中.你会怎么引用它?通过完整的"C:\ long\path\to\project\directory\file.js"?
级联依赖关系
如果A.js引用B.js引用引用D.js的C.js,所有这些都来自不同的目录呢?
A.js是否应该包含对B,C和D的引用,或者引用是否应该级联到A.js?
更多??
我将启用社区Wiki,以便希望这可以成为最佳实践的概要.
这是预算编制的时间,而且企业正在为更换同事的机器而付出代价,需要它并且值得拥有它.
我们的小组是一个小型的ISV/SAAS,作为一个更大的媒体集团的一个部门而存在.我们不是成本中心,我们赚钱,即使是今年.我们拥有一家中型媒体集团,其业务模式完全不同,似乎只能通过降低成本来实现.
我们的软件堆栈是Windows Server 2008上的Visual Studio 2008,SQL 2008(因此可以在每台开发人员的计算机上托管和调试多个根网站).我们的目标硬件是3GHz四核工作站,4GB RAM和RAID 1镜像硬盘驱动器,因此我们可以防止丢失开发人员硬盘驱动器的生产力损失.
企业希望为我们提供一些功能强大,但是可以放弃,退役的服务器,然后每个开发人员都会在该服务器上安装一个虚拟工作站.坐在我们桌面上的电脑将是愚蠢的终端,每个400-500美元.
我试图保持中立,但我怀疑很难看出我的偏见.我希望看到真正的开发者对此的反应,我认为这是获得它的最佳位置.
请包括支持或反对的论据,证据,如果您已经看过这种尝试以及它已经有多好(或没有).
我不能在我们的网络上使用对等名称解析协议,因为我们的服务器场的路由器不支持IPv6.
所以,我正在尝试使用数据库实现我自己的PeerResolver.
它作为一个概念验证工作得很好,但由于文档基本上不存在,我很难决定如何管理事物.例如:
我很乐意,如果有人在那里有很多WCF经验,可以对这些问题有所了解.
我想从.NET应用程序确定当前用户(来自System.Environment.UserName)是物理登录到计算机还是通过终端服务登录.
用例是一个启动程序启动器.当我在本地登录我的开发机器时,我通常会想要自动启动大量应用程序(Outlook,各种通知区域应用程序),但是当我使用终端服务进行连接时,通常意味着我正在通话并处理一个问题,我希望我的系统尽快准备好.
我猜这可以通过WMI实现,但我不熟悉类或查询来完成它.
我们在工作中处于紧张状态,我需要一些清晰度:
基本上:我们可以使用WCF读取/写入MSMQ并在我们传递的对象上获得类型安全性.
替代方案:我们可以使用像NService Bus这样的东西做同样的事情.
现在,在我的工作中,我们都非常精通WCF,但我们都不熟悉使用服务总线.
因此,有人可以帮助我使用WCF或NService Bus获得一些优点/缺点收益/损失,因为现在我认为使用WCF会更容易(只要我们不需要高级交易等)?
您认为以后从WCF更改为NService Bus有多容易?
亲切的问候
我正在为内部WinJS应用程序构建一些非常基本的分析.就拿这意味着第三方分析解决方案将既矫枉过正和/或不可行的和/或对使用的第三方供应商而言,他们通常会禁止捕捉有关用户的个人身份信息,在这种情况下这是一个业务需求.
我要做的是确定多个应用程序以及应用程序某些区域内的区域花费了多少时间.为此,我显然需要知道他们何时进入和离开.
我发现的所有文档都说要使用WinJS.Application.oncheckpoint事件或Windows.UI.WebUI.WebUIApplication.onsuspending事件,这似乎是两个接入点,它们都是相同的基本概念.问题是这不能准确反映用户何时离开应用程序!暂停似乎只有在用户切换到另一个应用程序后才会发生,加上大约10秒......如果系统感觉像这样.
如果用户只是点击Windows键进入开始屏幕并且只是坐在那里,应用程序将继续无限期运行(对setInterval的调用能够影响状态),即使该应用程序无法看到!
我知道这是一个边缘情况,但是有没有更可靠的方式告诉用户何时无法看到应用程序,因为缺乏更好的定义?
笔记:
我有一个有趣的用例,其中某些异常类型意味着"此消息不再有效且应该被忽略"但是此代码没有任何意识,Bus以便调用Bus.DoNotContinueDispatchingCurrentMessageToHandlers().
我讨厌像每个消息处理程序中都需要的try/catch块这样的样板代码.所以我开始实现一个UnitOfWork来处理和吞下异常,但我找不到告诉框架的方法"是的,这个代码生成了一个异常,但忘记了这一点,只是完成了事务."
Bus.DoNotContinueDispatchingCurrentMessageToHandlers()不起作用.我尝试过ITransport注入和调用,AbortHandlingCurrentMessage()但这导致整个宇宙爆炸.即使单步执行源代码,我似乎也不知所措.
请注意,很可能这是一个可怕的想法,因为假设实际上存在异常情况时没有异常将导致事务提交,从而导致谁知道有多少不良的未知副作用.因此,最好有一个方法仍然回滚事务但丢弃该消息.但我会对潜在的"是的我知道我在做什么,提交交易而不管异常"选项感兴趣.
nservicebus ×3
wcf ×2
.net ×1
c# ×1
cordova ×1
corporate ×1
cross-domain ×1
hudson ×1
iis ×1
iis-6 ×1
intellisense ×1
javascript ×1
jquery ×1
metadata ×1
msbuild ×1
msdtc ×1
msmq ×1
p2p ×1
unit-of-work ×1
winjs ×1
wmi ×1
xhtml ×1