我使用FTP将IIS上的asp.net代码上传到C:\inetpub\wwwroot\myfolder
。在我从IIS管理器更改设置并单击“转换为应用程序”之前,它将无法正常运行。有没有办法可以从代码本身设置它,因为我无法访问IIS管理器?
更新:确切的错误消息:
分析程序错误消息:使用注册为的部分是错误的 allowDefinition ='MachineToApplication'超出应用程序级别。这个 虚拟目录未配置为错误可能导致错误 IIS中的应用程序。
答案 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)
简而言之,尝试在您的web.config中输入:<authentication mode="None" />
,看看它是如何工作的。
如果仍然无法正常工作且托管服务提供商无法将该网站配置为应用,那么您最好使用此搜索字符串在Google上进行更多搜索:
allowDefinition ='MachineToApplication'超出应用程序级别。这个 虚拟目录未配置为错误可能导致错误 IIS中的应用程序