我们目前有一个进程可以重新部署ASP.NET网站.代码本身就是一个ASP.NET应用程序.当前的方法已经工作了一段时间,只是循环遍历一个文件夹中的所有文件,并将它们复制到webroot中文件的顶部.
出现的问题是偶尔文件最终被使用,因此无法复制.这在过去是断断续续的,无关紧要,但在我们的一些较高流量站点,它现在大部分时间都会发生.
我想知道是否有人有一个解决方法或替代方法,我没有想到.目前我的想法是:
有没有人知道最好的方法是什么,或者如果没有像拥有管理员权限的用户那样运行发布应用程序就可以做#2(愿意授予它特殊权限,但我宁愿不要管理员)?
编辑
基础架构的澄清......我们在NLB中有2个IIS 7 Web服务器从共享NAS运行他们的webroots(更清楚的是,他们在NAS上使用完全相同的webroot).我们进行了大量的部署,以至于任何我们无法实现自动化的方法都无法实现.
有谁知道如何从edmx生成的实体框架中获取架构信息?
具体来说,我要设法穿越了,我目前没有实例的实体的外键,并获得它的外键关系,我想通过反射在会一般适用于任何一种方式来做到这一点每次都没有自定义代码的实体类.
EG:我的架构有2个类,User和Group.我有数字"42",我知道,从"用户"实体"的GroupId"属性来了,但此刻我不能工作,如何检测到的"用户"外键本"的GroupId"属性"Group"实体由它的"GroupId"属性组成.
我正在尝试创建一个HTTP处理程序来处理对文件夹的所有请求,但我只想在请求的文件不存在时触发它(EG:请求来自文件X,如果X存在我想要服务文件,否则处理程序应该处理它).
这些文件只是静态内容,而不是脚本本身,我认为它使它更容易但我似乎无法找到任何可以做到这一点的任何东西......任何人都有任何想法?我认为它可以完成,因为IIS7重写模块可以管理它,但我看不出如何...
编辑只是为了澄清......处理程序是典型的情况,它不是错误处理例程,而是实际提供适当的内容.我只是希望能够将新文件作为单独的东西添加到文件夹中,或者作为处理程序将提供的内容的重载.
我目前正在尝试在大型数据库上实现基于Lucene.NET的搜索,并且我试图搜索基本上是关系数据的问题.
在高级别,我正在尝试搜索的数据被分组,每个项目属于1到3个组.然后,我需要能够搜索组合组中的所有项目(EG:每个项目同时属于组A和组B).
这些分组中的每一个都有我正在搜索的数据中存在的ID和描述,但描述可能是彼此的子字符串(EG:一个名为"Stuff"的组和另一个"其他东西"),我不知道我想匹配具有我正在寻找的子字符串的类别.
我一直在考虑在不进行过滤的情况下将数据拉回来然后过滤ID,但出于性能原因,我打算对从Lucene返回的数据进行分页.我还考虑过将ID放在空格上并在场上进行文本搜索,但这似乎完全是黑客攻击......
有谁知道如何在Lucene.NET中最好地处理这种搜索?(只是在有人说我使用错误的工具之前澄清一下,这只是一组较大的过滤器的一部分,包括全文搜索.如果你仍然认为我使用了错误的工具,虽然我喜欢听听正确的是什么)
希望收集关于如何分割Web应用程序(或者可能是Web应用程序集)的一些观点(项目方面)...基本上整个事情将是一个大型站点,但问题出现是因为它有一个各种模块,每个模块都有自己的开发/发布周期.
出现的问题是,在尝试使会话在站点之间共享并在DLL中嵌入共享资源但将它们保持为一个大项目时,将它们拆分成为一个令人头痛的问题,从源代码控制的角度来看是一场噩梦.
我能想到的可行方法是:
我试图找出我能做但失败的另一件事是在某种程度上在csproj中有一个"虚拟文件夹",例如"ModuleA"文件夹实际映射到"../../../ModuleA /树干/".我相信没有使用某种预构建脚本就无法做到这一点,但我希望能在Visual Studio中实际加载一些东西,所以我觉得这个想法是不行的......
有没有人对我应该采取哪种方式有任何建议(无论是上述之一还是我没有考虑过的事情)?想要确保我不会在这里拍摄自己的脚,因为它可能是一个长期项目,有很多未来的增强/维护......
我们目前正在尝试使用多个证书设置HTTPS.我们取得了一些有限的成功,但我们得到了一些我无法理解的结果......
基本上我们的NLB上有两台服务器(10.0.51.51和10.0.51.52),两台IP分配给我们的NLB(10.0.51.2和10.0.51.4),我们有IIS监听这两个IP,并使用不同的通配符证书(To避免给出公共IP,让我们说A:443路由到10.0.51.2:443和B:443路由到10.0.51.4:443).我们还有一个使用端口地址转换的Cisco路由器将端口443从两个外部IP路由到这些内部NLB IP.
奇怪的是,如果我们请求A:443或B:443,这是有效的,但如果你在10.0.51.51:443,10.0.51.52:443,10.0.51.2:443或10.0.51.4:443内部进行,你总是会得到相同的SSL证书.此证书过去已分配给*:443但我们已确保在IIS中不再定义*绑定.
当我在修剪掉所有不相关的东西后运行"netsh http show sslcert"时:
IP:port : 0.0.0.0:443
Certificate Hash : <Removed: Cert 1>
IP:port : 10.0.51.2:446
Certificate Hash : <Removed: Cert 3 - Another site>
IP:port : 10.0.51.3:446
Certificate Hash : <Removed: Cert 3 - Another site>
IP:port : 10.0.51.4:443
Certificate Hash : <Removed: Cert 2>
Run Code Online (Sandbox Code Playgroud)
这告诉我*绑定仍在那里,这有点奇怪,但我不明白为什么会阻止对方工作(或者更奇怪的是为什么通过路由器的请求会起作用).
这让我想知道它是否真的将请求视为机器的IP而不是NLB IP,但不幸的是我们的开发环境只是一个服务器,这可以减少我可以采取的试验/错误的数量(因为我可以测试on是一个实时环境),没有说服管理层为测试环境购买更多服务器 - 这是我正在尝试的.
有谁有想法吗:
我在区域内的控制器遇到困难时,区域内的路由会回应请求.所以我有这样的设置(额外的东西削减):
/Areas/Security/Controllers/MembersController.cs
/Areas/Security/SecurityAreaRegistration.cs
/Controllers/HomeController.cs
Run Code Online (Sandbox Code Playgroud)
我有我的安全区域定义:
namespace MyApp.Web.Areas.Security
{
public class SecurityAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Security";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Security_default",
"Security/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的全球路由规则:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("{*robotstxt}", new { robotstxt = @"(.*/)?robots.txt(/.*)?" });
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional …Run Code Online (Sandbox Code Playgroud) c# ×6
asp.net ×3
iis-7 ×3
.net ×1
httphandler ×1
https ×1
iis ×1
lucene.net ×1
networking ×1
search ×1
svn ×1