如何在本地调试服务器上的站点?
 
如果要在本地调试服务器上的站点我们需要用到一个远程调试工具msvsmon.exe。
 
我们可以再VS安装目录中找到它
 
如:C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Remote Debugger\x64\msvsmon.exe
 
 
 
因为msvsmon.exe程序需要在服务器上运行我们可以将该程序所在目录设置为共享目录,或者直接将其复制到服务器上:
 

 
 
 
在运行msvsmon.exe程序前需要先关闭防火墙,如何熟悉防火墙配置可以进行具体的防火墙配置,
这里直接关闭防火墙,以保持通讯能够正常进行
 

 
 
现在在服务器上运行msvsmon.exe程序,可以从拷贝的文件中运行,也可以从共享目录中运行
 

 
 
这里我们以无身份验证的方式进行调试,打开工具中的选项菜单,进行如下配置

 
 
点击确定
 

 
 
此时我们的服务器也配置完毕。
 
 
现在开始在我们本机的VS中调试服务器上的站点。
打开我们的项目,在选择工具菜单栏下的附加到进程,选择远程方式进行传输
 

 
 
 
点击查找搜索网络中的主机
 
 

 
选择我们的服务器主机进行连接,附加我们要调试的工作进程
 
 
 
 
 
查看服务器上msvsmon程序的状态,可以看到连接成功
 

 
 
然后我们在VS中设置断点,并且访问我们的服务器站点
 

 
 
 
此时可以看到我们VS中的断点被没有中断,这是为什么呢?
 
我们查看一下输出窗口可以看到这么一条信息
 

 
 
我们的当前站点编译成的程序集的并没有加载到相应的PDB文件,所以无法进行调试。
 
此时我们就需要获取到程序集相应的PDB文件
 
 
这里我们可以直接将服务器上的发布文件直接拷贝到我们本地,并且对VS进行如下的配置
 
首先打开工具菜单栏中的选项,展开调试节点下的符号,添加一个新的符号文件位置,位置直接指向我们从服务器上拷贝下来的文件中的bin目录,
如果有多个站点就添加多个位置信息,也可指向远程服务器的共享目录位置,这里可能出现其他问题,暂不细述
 

 
 
 
接着我们展开调试选项中的常规节点,取消常规中要求源文件与原始版本完全匹配选项。因为我们的开发代码总会与发布的存在差异

 
 
再次附加进程看到输出中已加载符号
 

 
 
最后我们在访问我们服务器上的站点,可以看到断点被成功中断
 

 
 
 
注意:
        1、在远程调试时服务器网站的访问会被中断,所以多个请求会导致调试结果出现差异
        2、虽然我们可以新建多个msvsmon的实例进行运行,但是一个工作进程同时只能被一个用户附加
        3、缺失的PDB文件不能直接指向我们的开发项目中的PDB所在bin目录,因为项目代码往往与发布站点的代码有所差异,
            因为导致本地开发代码生成的PDB文件与发布站点的程序集无法正确匹配,因为PDB文件也无法被正确加载
        4、可以使用网络共享或其他方式将服务器站点上的PDB文件公开出来,本地的VS获取PDB的位置可以直接指向它,因为PC与
            网络环境的差异,此项尝试可能会存在问题,需要耐心测试(经测试,网络通畅下,正常可用)
        5、本文的示例使用的是无验证方式的远程调试,存在一定的安全问题,也可以在msvsmon使用包含身份验证的远程调试,
            在VS使用附加进程的方式时,直接使用默认的传输方式即可,此时需要进行计算机账户的配置
 

在VisualStudio中远程调试IIS站点的更多相关文章

  1. 使用vs远程调试iis站点

    在vs安装目录下IDE文件夹下的Remote Debugger 复制到服务器运行 启动msvsmon.exe msvsmon.exe启动后设置远程连接不验证身份 vs中 调试→附加到进程 ip+端口访 ...

  2. 修改host文件实现自定义域名和iis站点本地调试

    修改host文件实现自定义域名和iis站点本地调试 自定义域名:myhost.com windows版本:win7 iis版本:iis7.x vs版本:vs2010 现在开始动手设置了: 一.修改ho ...

  3. VS中附加进程的方式调试IIS页面,以及设置断点无效问题解决

    以前调试网站的时候都习惯是直接在解决方案中右键调试——启动新实例,后来发现这样的缺点有: 1.启动比较慢: 2.一些浏览器的request参数无法带入: 3.不特殊指定启动url的话,VS会将页面加载 ...

  4. [2017-08-09]一则使用WinDbg工具调试iis进程调查内存占用过高的案例

    最近遇到一个奇葩内存问题,跟了三四天,把Windbg玩熟了,所以打算分享下. 症状简介 我们团队的DEV开发环境只有一台4核16G的win2012r2. 这台服务器上装了SqlServer.TFS(项 ...

  5. 【转】一则使用WinDbg工具调试iis进程调查内存占用过高的案例

    最近遇到一个奇葩内存问题,跟了三四天,把Windbg玩熟了,所以打算分享下. 症状简介 我们团队的DEV开发环境只有一台4核16G的win2012r2.这台服务器上装了SqlServer.TFS(项目 ...

  6. 记一次IIS站点出错的解决过程

    记一次IIS站点出错的解决过程 以前一直都是人家用着系统出问题了反馈过来这边改,没想到这回就发生在自己使用的过程中 问题经过 我正在执行一个操作,保存了没有返回提示,打开浏览器控制台查看网络,请求返回 ...

  7. VS中发布并调试IIS程序

    1.创建本地IIS站点 2.修改配置 .net framework 右击项目属性,服务器修改为本地IIS,并且项目URL修改为相对应的站点即可 .net core 右键属性,进入调试栏新建一个配置 选 ...

  8. 在IIS站点中Adomd.net集成认证账号问题

    最近在做一个Asp.net项目的时候 ,在C#代码里面用到了Adomd.net去连接SSAS服务器做MDX查询,开发完成后将Asp.net代码部署到IIS后发现Adomd.net老是连接不到SSAS服 ...

  9. 使用awstats分析iis站点的日志

    环境:win7 + iis7 + perl(ActivePerl-5.20.1.2000) + awstats 7.3 一.找到iis日志所在目录 建议全部都打勾 二.安装perl AWStats是p ...

随机推荐

  1. 从svn检出项目的注意事项

    提交到svn的时候,选择忽略.project,.settings,.classpath等文件,检出项目的时候就不能选择 [做为工作作为工作空间的项目检出].而应该选择做为新项目检出. 然后选择工程的类 ...

  2. python-Unix套接字

    #!/usr/bin/python #coding=utf-8 #server import socket import sys import os server_address = './test' ...

  3. JavaScript设计模式-6.封装

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. Mysql日期类型大小比较---拉取给定时间段的记录

    我们知道,mysql里边,日期类型有很多表现形式,date, datetime,timestamp等类型.考虑这样一种场景: 按时间段拉取给定时间段的内容,这时,我们就得使用日期类型的比较了. 表结构 ...

  5. C++实现顺序查找,折半查找,插值查找

    1.顺序查找 从数组起始扫描到数组结尾,判断该索引数组是否和关键字相等,成功返回1 代码如下: //顺序查找 int seqSearch(int *array, int low, int high, ...

  6. 设置主外键时 ORA-02298: 无法验证 - 未找到父项关键字 --NOVALIDATE;

    主要原因是: 在添加CONSTRAINT的时候,默认是需要VALIDATE表中的已有数据的. 你要插入的表A里,有外键连接到另一个表B的主键,你在表A的外键列插入的值,在表B的主键列找不到就不能插入. ...

  7. C# 日历类

    using System; namespace DotNet.Utilities { /// <summary> /// 农历属性 /// </summary> public ...

  8. nodejs文件上传组件multer使用

    多图上传,发送端: var express = require('express') var rp = require('request-promise') var fs = require(&quo ...

  9. 04-Tomcat体系结构与插件配置

    一.发布程序详解 Context docBase:web应用的文件路径 path:URL入口 reloadable:字节码变化服务器是否重新加载web应用 二.tomcat服务器体系结构 1.Serv ...

  10. mysql 中优化数据类型的三个原则

    数据类型越小越好 在业务够用的情况下,尽可能选取小的数据类型.不仅占用空间小,而且执行查询等操作时性能好. 越简单越好 对于简单的类型,在处理时会占用更少的 CPU 周期. 例如,整数就比字符类型简单 ...