【问题标题】:How to specify a port for the ASP.NET Configuration Site?如何为 ASP.NET 配置站点指定端口?
【发布时间】:2011-08-23 13:12:23
【问题描述】:

有没有办法为 ASP.NET 配置站点 (Web Site Administration Tool) 指定一个永久端口?

我需要添加指向 ASP.NET 配置站点的链接,但由于每次启动时端口都会更改,我无法添加。

【问题讨论】:

标签: c# asp.net configuration port


【解决方案1】:

它是 ASP.NET 开发服务器的端口

http://msdn.microsoft.com/en-us/library/ms178109.aspx

【讨论】:

  • 我不明白“使用动态端口”在哪里?我试过了,没找到。
  • 至少发布一个指向 OP 使用的版本的链接。为你解决了这个问题。
【解决方案2】:

我不确定你可以。

Web Site Administration Tool 并不是真正意义上的“链接”,它是一个相当强大的、不安全的应用程序,它只真正意味着由开发人员/管理员运行。

文档的“注意事项”部分解释了原因:

以下部分提供了使用网站管理工具的一些注意事项。

保存时重启应用程序

您在网站管理工具中对配置设置所做的大部分更改都会立即生效。这需要重新启动应用更改的网站。因为这会导致网站中当前活动的会话丢失,所以您应该在将这些更改发布到生产服务器之前,对网站的暂存版本或开发版本进行配置更改。

保存您的设置

您在网站管理工具中对配置设置所做的大部分更改都会立即生效。对于网站管理工具界面具有专用保存按钮的设置,在单击“保存”之前让网站管理工具闲置或让网站管理工具超时将导致您的配置设置更改丢失。

超时

作为一项安全措施,网站管理工具会在一段时间不活动后超时。任何未立即生效且未保存的设置都将丢失。如果网站管理工具超时,请关闭浏览器,然后在新窗口中重新打开网站管理工具。

网站管理工具只管理网站可用的一些配置设置。许多其他设置需要手动修改配置文件,通过使用用于 ASP.NET 的 MMC 管理单元,或通过编程方式,通过使用 ASP.NET 配置 API。

从中可以看出,这不是要保留的东西。

也就是说,只要稍加修改,您就可以一枪打死自己实现您所追求的目标:

如果您右键单击管理工具的 ASP.NET 开发服务器任务托盘项,然后选择“显示详细信息”,您可以看到运行该工具的虚拟目录已映射到(类似于):

C:\Windows\Microsoft.NET\Framework\v4.0.30319\asp.netwebadminfiles\

如果您要在映射到该路径的应用程序上创建(并保护)一个虚拟目录,那么您很可能能够根据需要启动并运行这一切。


正如pseudocoder 在他下面的评论中指出的那样,虽然沿着虚拟目录路由确实“有效”,但该工具存在一些限制,再加上安全问题意味着您可能不想使用它会继续前进。

如果您坚持使用开发服务器选项,该工具将不会响应非本地请求,并且一旦您将站点部署到适当的 Web 服务器 (IIS) 以供用户访问管理站点无论如何都不会运行。

如果您能解释为什么要永久使用它可能会更好,这样我们就可以为您提供一些更好的选择建议 - 例如,成员资格、个人资料和角色提供程序都提供了很好的 API 来管理用户详细信息,这些 API 可以很容易内置在自定义管理区域中。


棘手的一个,但我认为要使其正常工作,您将不得不花一些时间做某事,从长远来看,花时间做可能对您更好正确的事情,而不是在错误的选择中进行黑客攻击。

开发服务器可以从命令行启动,使用如下命令:

call "C:\Program Files\Microsoft Visual Studio 9.0\vc\vcvarsall.bat"
"C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WebDev.WebServer.exe" /port:3900 /path:"PATHSITE" /vpath:"PathSite"
  1. 第一行设置 CMD 实例以使用运行大多数开发工具所需的变量和路径设置
  2. 您需要根据您的环境更改 DevServer 的路径(例如,我在 \10.0\ 中,并且有 2.0 和 4.0 版本)。

有了这些信息,你可以做一些事情:

  • 将指向您网站的链接添加到名为 /StartAdmin.aspx 或类似页面的页面。
  • 在该页面中,您需要具备以下逻辑:
    • 检查之前用于托管管理站点的 DevServer 实例的运行进程。
    • 关闭该进程。
    • 使用已知端口启动另一个 DevServer 实例,指向 WebAdmin 站点的路径。
    • 将用户重定向到这个新网站。

所有这些都是可能的,但这并不是微不足道的,你会发现你需要在开始的过程中做一些奇怪的事情,你需要非常小心,不要关闭错误地实际运行您的站点的 DevServer 实例。

但是,这可能需要与快速打开一组用户管理屏幕一样长的时间,并且您会在此过程中学到更有用的东西*

* 这并不是说学习如何开始和停止运行进程没有用,而是说我猜这不是你目前应该学习的内容,而你可能应该专注于那个;)

【讨论】:

  • 您建议的“解决方案”确实有效。我以前做过。然后在药物消失后,我删除了该配置。 Web 管理界面是有限的,例如,根据我的经验,您只能管理数据库中的前 1000 个用户。在我看来,如果您需要一个集成应用程序的管理控制台,请自己编写一个。
  • 也许我可以知道 Page_Load 之前的端口号以及所有时间更改链接到 ASP.NET 配置?
  • @pseudocoder - 是的,它有很多限制,一般来说你最好为你需要的工作编写特定的工具。
  • @Nickolay - 遗憾的是,由于以下两个原因,这可能并不容易:1) 端口号是从一个相当大的池中随机分配的。 2)正如引用“[工具]在一段时间不活动后超时”中所述,除非你正在做一些事情来保持网站的活力,端口号会改变,然后你将不得不解决它是什么。
  • 我的考试需要它,但我不想自己写。我需要我站点的管理员可以通过单击站点中的链接而不是 Project->ASP.NET 配置来访问 ASP.NET 配置工具。我想也许有人在 Page_Load 之前编写了识别并返回端口号的函数。
猜你喜欢
  • 2019-11-17
  • 2019-06-05
  • 2014-12-27
  • 2014-08-20
  • 2020-08-19
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 2012-04-16
相关资源
最近更新 更多