代码之家  ›  专栏  ›  技术社区  ›  Simon Steele

使用wix将clientaccesspolicy.xml安装到默认网站

  •  0
  • Simon Steele  · 技术社区  · 14 年前

    我正在使用Wix安装我的Web应用程序,它包括一个Silverlight应用程序。由于跨域限制,我需要安装一个clientaccesspolicy文件以确保Silverlight应用程序可以与包含的Web服务进行对话。

    不幸的是,clientaccesspolicy.xml必须在站点的根目录下可用,所以我不能将它放在我的Web服务或网站上。例如

    作品: http://someserver/ClientAccessPolicy.xml
    不起作用: http://someserver/MyApp/ClientAccessPolicy.xml

    如何找到IIS“默认网站”的目录以将文件作为安装的一部分复制到那里?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Yan Sklyarenko Rob Mensching    14 年前

    不幸的是,您必须为此编写自定义操作。这似乎只是一个简单的即时操作,即找到正确的目录路径并将其放到一个属性中。

    更新:此示例的C代码可能如下所示:

     DirectoryEntry website = new DirectoryEntry(string.Format("IIS://localhost/w3svc/{0}/Root", siteID));
     if (website != null)
     {
        string sitePath = website.InvokeGet("Path") as string;
        if (sitePath != null)
        {
           session["SITE_PATH"] = sitePath;
           return ActionResult.Success;
        }
     }
     return ActionResult.Failure;
    

    它假设您以某种方式知道站点ID。例如,如果不总是默认网站,最好让用户选择。但那是另一个故事。

    还要注意,此代码需要特殊权限才能访问目录entry-常规用户是不够的。

    希望这有帮助。