我花了最近几天将应用程序部署到auze。一切看起来都不错,但我遇到了虚拟应用程序的问题。
在我的servicedefinition文件中,我有
<Sites>
<Site name="Web" physicalDirectory="D:\@code\Web">
<VirtualApplication name="API" physicalDirectory="D:\@code\API"></VirtualApplication>
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" />
<Binding name="Endpoint2" endpointName="Https" />
</Bindings>
</Site>
</Sites>
部署了两个应用程序并创建了虚拟应用程序但是我无法运行api应用程序。我转到服务器上看看。 API项目没有被编译,基本上所有的.cs文件都在siteroot&gt;的根目录中。 1
我需要做一些额外的步骤来解决这个问题吗?
任何帮助都会很棒。
答案 0 :(得分:1)
只有WebRole项目(..Site name='Web'...
)被“编译”。
您定义的所有其他网站(包括虚拟应用程序)都会被复制。因此,您需要将physicalDirectory
指向本地部署/编译的应用程序文件夹。例如,您可以为部署到本地文件系统的API项目创建发布配置文件。然后在physicalDirectory
定义中为VirtualApplication
指定该部署的目标文件夹。
有一些文档here。但是,没有明确提到它为WebSite项目开箱即用,而不是Web应用程序项目!它适用于WebSite项目开箱即用,因为WebSite项目的部署模型只是xcopy deployment
。
显然现在很少有人做网站项目。我们大多数人都做Web应用程序项目。因此,对于Web应用程序,我们不能将physicalDirectory
指向项目文件夹,而是指向该项目的部署文件夹。
如果有人感到困惑 - 请参阅Web Application Projects versus Web Site Projects上的官方文档。