6.服务器专版/CS专版

服务器专版

问1.我配置好了服务器专版，用花生壳作为临时域名测试，发现本机访问服务没问题，但从外网访问域名就是不成功，会是什么原因？

我们发现过几起，都是和Windows防火墙有关, 你应该在防火墙的“高级设置”中分别增加一个入站规则和出站规则，开放80端口.

问2.我是用IIS的，发现DLL无法加载，一般是什么原因？

1.确保已经加入了应用程序池，而不仅仅是虚拟目录;
2.应用程序池有32位和64位之分，在“高级设置”中有“启用32位应用程序”选项，该选项决定了您必须使用32位DLL或64位DLL，不得有误.

问3.硕正给的示例程序中有下面这一段:

      ...
      //服务是否被其它线程打开着
      if(srv.GetActiveServices( ) > 0) {
       throw new RuntimeException("服务器忙!  ");
      }
     ...

如果有多个并发请求该怎么处理? 抛出服务器忙的异常肯定行不通的。 示例只是简单的处理. 你可以写一段等待的循环, 比如每隔1秒钟检测一下, 一旦 GetActiveServices( ) 返回 0, 则跳出循环、继续处理.

CS专版

问1.用WinForm C#开发，一运行就报错如下：System.BadImageFormatException: 试图加载格式不正确的程序 (异常来自 HRESULT:0x8007000B) ... .. .请问是什么原因？

如果 WinForm 编译为 "任何CPU"，那么在64位机器上就会用运行为64位，而64程序是不能加载32位dll。解决方法：
1.项目右键属性->项目设计器->生成->平台->把'默认设置(任何 CPU)'改为x86;
2.或者采用硕正64位版的DLL.