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.