最近工作中遇到的一些细节问题

以下这些是最近在重构ExUnitTest项目中遇到的一些比较有意思的问题

1. "Explicit" (C++ Key Word),用于构造函数前,以关闭隐式的类型转换

class CDemo {
     int value;
public:
     CDemo(char * p) { }
     //~CDemo() { } // no meanful, extra load will be added, comment out.
     CDemo& operator +(const CDemo &right) {
          //…
          return *this;
     }
     CDemo& operator +(char * p) {
          //…
          return *this;
     }
};
CDemo a; a = a +"3"; // 试问两个+运算符,会调用哪个? 如果加上Explicit又会怎样?有兴趣的人自己写代码去试试。哈哈~~

2. HTTP 405 & 500 Error Code

在测试LibCurl发送的类时,我曾企图写一个ASPX页来接受处理MC3发出的请求,结果先后出现了如上两个Status Code。
  • 405是Resource Not Allowed Error,说明IIS无法处理请求所对应的资源。原因是我设置的URL资源后缀在IIS上没有未映射过(Mapped)。IIS只支持Get可以访问未映射的资源,而Post, Head都不可以。
  • 500是服务器内部错误。原因是MC3发送给ASPX页面的Request中的contenta并不是ASP.NET所能识别的数据,所以ASP.NET在解析的时候就发生错误。解决的方法是使用Generic HttpHandler(.ashx),这样http的请求就都可以在服务器上处理了。