我有一个Web应用程序,为了向我的客户端进行演示,他们要求我将它安装在本地服务器上,以便他们可以测试它,这是我的问题!?
有没有办法让我可以为该服务器唯一发布,我确实提出了一些限制,但我的应用程序中的许多功能都是开放的,因此他们可以从服务器制作磁盘映像并在其他任何地方使用它,
是否有任何方法可供使用,以便我的Web应用程序检查此服务器是否是同一服务器(通过硬件ID或任何我不知道的任何内容)然后开始工作!
我看到很多代码,但它们是用于生成独特隐藏的胜利形式,但我如何连接到asp .net
修改
你也可以看看这个吗,
我是using system.management class
这是可靠的我的意思是他们独一无二吗?
private string GetUniqueID()
{
string cpuInfo = string.Empty;
ManagementClass mc = new ManagementClass("win32_processor");
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
if (cpuInfo == "")
{
//Get only the first CPU's ID
cpuInfo = mo.Properties["processorID"].Value.ToString();
break;
}
}
ManagementObject dsk = new ManagementObject(@"win32_logicaldisk.deviceid=""" + "C" + @":""");
dsk.Get();
string volumeSerial = dsk["VolumeSerialNumber"].ToString();
string HardWareUniqueID = volumeSerial + cpuInfo;
return HardWareUniqueID;
}
欣赏你的答案, 提前致谢
答案 0 :(得分:3)
如果你想避免让它“回家”,另一种方法是生成某种证书并将其放在机器上。使用只有您知道的私钥才能加密计算机名称和/或IP。然后让您的应用程序使用您的公钥对其进行解密,以验证是否允许它在此服务器上运行。没有人知道您的私钥将无法创建有效的证书。
答案 1 :(得分:1)
你有几个选择......
将您的网站锁定到您安装它的单个IP地址。为了让您的生活更轻松,请在通用页面基类中检查该IP。 (注意,您也可以编写HTTP处理程序,但基类方法更容易。)
在应用中放置一个“电话回家”电话,每次启动时都会检查您的服务器。这样,您可以检查是否已移动它或是否正在运行多个实例。
使用.NET的内置许可功能(同一个第三方开发人员用于控件等)
最简单的......只需加入定时炸弹,让他们测试几周,然后自动阻止访问。要聪明一点......坚持最后检查的时间,这样你就可以判断他们是否为了获得更多的使用而回滚他们的时钟。
只需确保分发Web应用程序,而不是Web项目,这样您就可以将代码分发为已编译的bumary,而不必分发代码隐藏文件。这会让人眼前一亮,但确实会让部署变得更加痛苦,因为你总是需要在每次更改时重新编译(而不是按需编译)。
答案 2 :(得分:0)
答案 3 :(得分:0)
为他们提供没有任何用户访问权限的VMware映像,只允许他们在Web浏览器中通过HTTP从外部打开网站。