以编程方式为.net站点设置“转换为应用程序”选项

时间:2011-08-23 09:07:41

标签: c# .net asp.net iis

我使用FTP将IIS上的asp.net代码上传到C:\inetpub\wwwroot\myfolder。在我从IIS管理器更改设置并单击“转换为应用程序”之前,它将无法正常运行。有没有办法可以从代码本身设置它,因为我无法访问IIS管理器?

更新:确切的错误消息:

  

分析程序错误消息:使用注册为的部分是错误的   allowDefinition ='MachineToApplication'超出应用程序级别。这个   虚拟目录未配置为错误可能导致错误   IIS中的应用程序。

3 个答案:

答案 0 :(得分:4)

你有一点鸡和蛋问题,很可能是权限问题。

IIS应用程序定义应用程序的根目录(具有web.config,可以映射到appppool进程等...)。 IIS应用程序映射到IIS目录,该目录是物理目录或映射到物理目录(vdir)。

您正在将代码FTP到该目录中。

第一个问题是创建一个IIS应用程序还需要非常高级的权限,即使你可以在FTPing之后执行你的代码,应用程序池也不可能并且不应该使用这些权限运行。

服务器管理员或托管公司应创建映射到您要FTP的文件夹的IIS应用程序。管理员需要以交互方式在服务器上运行该命令或某些配置代码/脚本/安装程序。

PS:有一个边缘情况,它可能会工作,如果你正在FTP到vdir,你需要创建IIS应用程序,但它是在一个根IIS应用程序下映射到一个非常运行的apppool在系统上提升管理员(不明智,可能不是这种情况),你提出相对于root的请求,这将在你FTP的vdir上创建一个IIS应用程序。非常不可能,你不会想要在那个高架环境中运行,无论如何都要面向外部。

答案 1 :(得分:3)

在托管的IIS服务器中,它只向客户提供FTP访问权限,而您无法将虚拟目录转换为应用程序。

我建议您在从虚拟目录而不是IIS应用程序运行的计算机上本地测试应用程序,并检查哪些不起作用。

web.config无论如何都会起作用,当然有一些限制,比如你不能指定应用程序池,你的web应用程序将在为虚拟目录的父应用程序定义的应用程序池中运行,但在很多情况下这应该是好吧无论如何。

根据您的托管公司,特别是如果它非常便宜,他们不为每个托管域提供/创建一个应用程序池,您可以仔细检查它们,并询问他们有什么其他选择。

我会先尝试调试并在本地运行虚拟目录。

答案 2 :(得分:3)

我找到了这个:http://www.shabdar.org/asp-net/74-virtual-directory-not-being-configured-as-an-application-in-iis.html

简而言之,尝试在您的web.config中输入:<authentication mode="None" />,看看它是如何工作的。

如果仍然无法正常工作且托管服务提供商无法将该网站配置为应用,那么您最好使用此搜索字符串在Google上进行更多搜索:

  

allowDefinition ='MachineToApplication'超出应用程序级别。这个   虚拟目录未配置为错误可能导致错误   IIS中的应用程序