65.9K
CodeProject 正在变化。 阅读更多。
Home

基于“零触摸”部署的智能客户端应用程序

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.25/5 (4投票s)

2006 年 6 月 22 日

4分钟阅读

viewsIcon

21753

downloadIcon

330

基于零接触部署的智能客户端应用程序。这种类型的应用程序可在 Internet 区域提供非常丰富的 GUI。

引言

基于零接触部署的智能客户端应用程序。

  1. 为智能客户端应用程序安装和配置 Web 服务和网站

    • 解压并将这两个文件夹复制到您计算机的 wwwroot 文件夹或您方便的任何其他文件夹。
    • 运行输入 intemgr(或打开 Internet Information Services Manager)。展开直到默认网站。为两个网站(Smart client)和 Web 服务创建虚拟目录。
    • 确保 Smartclient.aspx 已添加到文档选项卡。
    • 打开“目录安全性”选项卡,单击“匿名访问和身份验证控制”,然后单击“编辑”按钮,确保选中了“匿名访问”复选框。
    • 单击此窗体上的“确定”和父窗体上的“确定”,然后关闭它。
    • 对 Web 服务执行相同的配置设置。

  2. 网站虚拟目录属性更改以允许 exe 执行

    • 再次打开 Internet Information Services Manager(运行 inetmgr)。
    • 单击网站的虚拟目录(不是 Web 服务)。
    • 查看虚拟目录的属性。
    • 在“目录”选项卡上单击“配置”按钮。
    • 单击“添加”按钮,并为 .exe 扩展名添加 dll 引用 C:\your windows folder \Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll。
    • 单击所有窗口上的“确定”,现在可以从该站点执行 exe 了。

  3. 配置处理程序项目并将处理程序添加到网站

    • 打开 ConfigHandler.zip 中的项目并构建它,以生成一个名为 Confighandler.dll 的 DLL。
    • 打开 SmartClient.zip 中的项目,并将此(Confighandler.dll)添加到网站代码的引用中。
    • 打开 web.config 文件,并将下面给出的代码添加到 web.config 文件中。
      <httpHandlers>
          <!-- map .exe and .exe?blah.config files to our handler --> 
          <add verb="*" path="*.exe" 
               type="ConfigHandler.ConfigFileHandler, ConfigHandler" /> 
          <remove verb="*" path="*.config" /> 
          <add verb="*" path="web.config" 
               type="System.Web.HttpForbiddenHandler" /> 
      </httpHandlers> 
      
    • 现在构建网站代码。您应该能够通过以下 URL 启动它:https:///SmartClient/SmartClient.aspxhttp://yourMachineName/SmartClient/SmartClient.aspx

    • 这有助于消除当 exe 显示为exename.exe.config时出现的错误。

  4. 从智能客户端应用程序访问 Web 服务

    • 打开 SmartClientApp.zip 文件中的项目,并在项目菜单中添加一个指向您的本地 Web 服务的 Web 引用,例如 https:///mywebserivce/mywebservice.asmx。将此 Web 服务引用重命名为 SerializeMe。
    • 打开 app.config 文件并提供您的 Web 服务名称,例如
      <configuration> 
      <appSettings> 
          <add key="AccessSerializeObject.SerializeMe.SerializeWS" 
            value="https:///MySerializableWS/SerializeMe.asmx" /> 
          <add key="WSPath" 
            value="http://work02049/MySerializableWS/SerializeMe.asmx" /> 
      </appSettings> 
      </configuration> 

    现在您可以测试运行此应用程序了。

  5. 从网页启动应用程序

    • 各位,这就像从同一站点或任何其他站点访问任何其他网页一样简单。只需在此站点中指定应用程序的位置和链接标签,您的应用程序就可以正常工作了。
    • 将应用程序放在网站的根文件夹中。
    • <a href=" ./SmartClient.exe">SmartClient.exe</a>
    • 您甚至可以向 Windows 应用程序传递参数
      <a href=" ./SmartClient.exe?PRM=xyz">SmartClient.exe?PRM=xyz </a>

      或向您的应用程序传递多个参数,例如

      <a href=" ./SmartClient.exe?PRM=xyz&PRM1=abc">SmartClient.exe?PRM=xyz&PRM1=abc</a>
    • 您需要对传递给应用程序的参数进行不同的处理,我们将在下一节中讨论。

  6. 向智能客户端(NTD)应用程序传递参数

    • 打开 smartclientapp 项目,找到一个名为 WebCommandLineHelper.cs 的文件。传递给应用程序的任何参数都将作为命令行参数传递,并在 main 方法中作为参数接收。我们需要删除头部部分,并获取传递给应用程序的命令的名称-值对。
    • 以下是访问和分离这些名称-值对的代码,以便我们能够访问它们。
      string[] args = WebCommandLineHelper.GetCommandLineArgs(argsFromMain); 
      if(args.Length > 0) 
      { 
          for(int j = 0; j < args.Length; j++) 
          { 
              string[] pair = args[j].Split('&'); 
              for (int i=0;i<pair.Length;i++) 
              { 
                  string[] val = pair[i].Split('='); 
                  switch( val[0].ToLower() ) 
                  { 
                      //remore redundand items and check for case dependency 
                  case "prm" : 
                      strUserName = val[1].ToString(); 
                      break; 
                  case "prm1" : 
                      strPRM1 = val[1].ToString(); 
                      break; 
                  case "prm2" : 
                      strPRM2 = val[1].ToString(); 
                      break; 
                  } 
              } 
          } 
      } 
      
      strWSPath = 
          System.Configuration.ConfigurationSettings.AppSettings["WSPath"]; 
      
    • '=' 符号是名称-值对的分隔符,而 '&' 是不同参数的分隔符。

  7. 每次重建应用程序时清除 GAC 或更改应用程序版本

    • 由于我们为应用程序使用了强名称,它会被存储在全局程序集缓存中。当我们重建应用程序并将其放回网站文件夹并尝试启动它时,它将显示 JIT 错误,因为已经存在一个具有相同名称、相同版本和相同强名称的程序集。您可以通过以下两种方法解决此问题。每次重建应用程序时,在 assembleyinfo.cs 文件中更改版本号。
      [assembly: AssemblyVersion("1.0.1.6")]
      或者,转到 .NET 命令提示符(开始->程序->Microsoft Visual Studio .NET 2003->Visual Studio .NET Tools->Visual Studio .NET 2003 Command Prompt),然后键入 gacutil /cdl

  8. 使用应用程序

    • 当您最终准备好使用它时,只需键入 URL https:///smartclient/
    • 页面上有 3 个链接,在一个表中,它们将启动不带参数的应用程序(单击 SmartClient.exe 链接),另一个带有一个参数,用户必须在此处指定其姓名(单击 Click here SmartClient.exe?prm=xyz 链接),这将显示用户姓名在标题栏上。第三个有两个文本框,用户需要输入两个值,这两个值将在启动应用程序时相加。
© . All rights reserved.