通过打断点调试本地服务程序

来源:互联网 发布:linux网络管理命令 编辑:程序博客网 时间:2024/05/21 06:39

这几天被一个统一登录服务困扰着,折腾了好几次,最后还是得真正打断点进到服务代码才能找到错误的根源。之前浪费了不少时间。终于承认,找错误还是要找到根源上,而不是不断地假设问题所在点。当试了几个假设可能有问题的点的时候,还没有找到解决方法,这是深究到代码里面才是王道。

 

问题大致描述如下:现在有两个项目,一个lib,用作统一登录,一个文件系统(后面成为子系统),用作登陆后的菜单链接项目。他们之间有一个统一登录服务,即,在lib中登陆了,在子系统中是不需要再次登陆的,他们之间通过统一登录服务共享登陆信息。  问题出在lib登陆后进入index.aspx页面,同时调用了子系统的显示公告板页面。之前index.aspx不显示这个公告板的时候,是没有登陆丢失的问题的。现在会有登陆丢失。

 

其实这里已经找到原因了。一定是跟那个显示公告板有关系的。最后我在VS中运行服务项目,断点进去,发现token会在第三次的时候丢失,我才恍然明白,是lib的index.aspx页面增加了显示公告板的原因。子项目的显示公告板页面继承了BasePageExt.cs,该类中会判断当前是否有登陆信息。登录信息是通过lib请求子项目的地址连中加入参数ck,ck中保留登陆信息传给统一登录服务,子系统再调用服务,获取登陆信息的。而我现在并没有给显示公告页面传ck参数。所以一直报登陆丢失。至此我就明白了,搜噶。

 

 

 

现在说说怎么在VS运行本地服务,让断点进到服务里面吧。

说明:服务是本地VS程序,lib和子系统采用服务器上的。为了让断点进入服务,所以服务不能发布到本地的IIS,而是在VS上跑。

操作:(1)右击服务项目->"属性"->

       注:为了实现在本地调试服务,所以要把端口号去掉,改用本地IIS服务的方式启动。这点很关键,要不然没法发在服务器上调用本机服务。

       (2)把服务器上的lib项目和子项目的web.config的服务调用改成本机的:<add key="loginservice" value="http://171.186.109.56/AuthoriseService/Authorise.asmx" />

            171.186.109.56是本机的以太网IP,且服务器能ping通

       (3)运行lib项目,输入用户名和密码,登陆。然后就能进入到服务打的断点了。

 

0 0