澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

Web应用调试开启外部访问,Web解决办法

十三、无法在web服务器上启动调试,您没有调试web服务器进程的权限,您需要以web服务器的用户账户身份运行,或者具有管理员权限。

现象:手动修改网站项目的启动端口号,调试报错

 图片 1

 

原因:从Windows NT 6.1开始,既Windows Vista版本开始,增强了用户控制,尤其是Windows 8。如果没有用系统优化软件做过用户控制,系统权限调整,即默认的情况下。

Visual Studio 必须是"以管理员身份运行",即鼠标右键"以管理员身份运行",不是指你当前登录的账户是不是Administrator的问题。否则当你的Visual Studio在F5启动调试的时候,就会出现以上错误:"无法在web服务器上启动调试,您没有调试web服务器进程的权限,您需要以web服务器的用户账户身份运行,或者具有管理员权限。"

解决办法:

桌面,鼠标移动到Visual Studio 2012 上方。右键--〉属性

 图片 2

 

单击--〉高级

 图片 3

 

在"用管理员身份运行(R)" 打勾,然后确定。OK,解决了。

或者每次右键"以管理员身份运行"。

 

开发环境:windows8.1 VS2013

  IIS Express可以说是.NET web开发者必用的服务器,日日夜夜都和它打交道。一直以来,除了遇到什么点什么问题,很少会去关注过它。

在用C#开发Web应用时有个痛点,就是本机用VS开启Web应用调试时外部机器无法访问此Web应用。这里将会介绍如何通过设置允许局域网和外网机器访问本机的Web应用。

十四、设置网站项目(website)的默认启动端口

1.说明

在VS中 没有提供修改端口的地方,在网站的属性页中

 图片 4

 

不可修改

2.如果想要修改生产环境(IISExpress)的端口需要在解决方案源代码修改

使用记事本等打开.sln文件

 图片 5

 

手动修改启动地址。【不止一处】

使用VS2013有一段时间了,因前期都是编写C/S程序,没有使用到B/S调试器。前几日,创建了一个MVC项目,突然发现VS2013无法调试,报了这样的错。

  今天看到以前转载的一篇博客,就再次温故下,主要包含IIS Express的简介与安装、配置、命令行使用。

目录

  1. 设置内网访问

  2. 设置外网访问

  3. 设置内网访问

在设置之前,本机环境如下:

操作系统:win7

IDE:Visual Studio 2010

应用:ASP.net

想要实现局域网内其他机器访问本机web应用包含以下4步:

图片 6

一、介绍

第一步:设置启动方式为IIS Express

Visual Studio 运行Web应用时,默认采用自身的Visual Studio开发服务器。所以先要把项目改为用 IIS Web服务器。

首先确保机器已经装了IIS Express,下载地址:

步骤:右键Web项目 → 属性 → Web选项卡 → 勾选使用本地IIS Web 服务器 → 设置端口并点击按钮

图片 7

一下子有点蒙,why?

1.安装

  如果不是在开发环境,需要手动如安装,现在最新的版本已经是10.0.

   IIS 7.5 Express下载地址:

   IIS 8.0 Express下载地址:

   IIS 10.0 Express下载地址:

style="text-align: left; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; font-family: 'Microsoft yahei', '????', Tahoma, Verdana, Arial, sans-serif; font-size: 12.96px; font-style: normal; font-weight: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; background-color: #ffffff; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px;"> style="text-align: left; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; font-family: 'Microsoft yahei', '????', Tahoma, Verdana, Arial, sans-serif; font-size: 12.96px; font-style: normal; font-weight: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; background-color: #ffffff; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px;">使用 IIS 10.0 Express 的好处包括:
•在生产服务器上运行的同一 web 服务器现在可用于开发计算机。
•无需管理权限,即可执行大多数任务。
•IIS Express 可在 Windows 7 Service Pack 1 及所有更高版本的 Windows 上运行。
•很多用户可在同一台计算机上独立作业。

第二步:设置IIS Express的applicationhost.config文件

点击上面操作的按钮后,会在IIS Express的applicationhost.config文件创建虚拟目录信息。

Web应用调试开启外部访问,Web解决办法。文件默认路径:%userprofile%My DocumentsIISExpressconfigapplicationhost.config

找到上面应用程序的配置信息,添加一条<binding>

<binding protocol="http" bindingInformation="*:8081:*" />

示例图

图片 8

注意:修改前若已启动了IIS Express,修改后需要重新启动IIS Express才生效。

 

2.简介

  IIS Express是为开发人员优化的轻量级、自包含版本的IIS。IIS Express使使用当前最新版本的IIS来开发和测试网站变得容易。它具有IIS 7及以上的所有核心功能,以及为简化网站开发而设计的附加功能。

第三步:设置windows 防火墙

完成上面2步后,还需要设置防火墙允许此端口通过。

修改项目属性的Web项,如下。

3.IIS Express和IIS  

  IIS Express源于IIS 7及以上,支持IIS的核心特性,但有一些关键区别。一个重要的区别是工作进程的管理。在IIS,Windows进程激活服务(Windows Process Activation Service【WAS】)是静默激活和停用的Web应用程序,用户没有直接控制。在IIS Express中,不存在WAS,用户可完全控制应用程序的激活和停用。启动后在系统托盘中显示,已经运行的网站可以手动去启用和停止。Hostable Web Core (HWC)是一个IIS API,可用来编写独立的Web服务器,但不被WAS管理。IIS Express被设计为在HWC上的一个壳。

 以下表格主要展示了IIS and IIS Express的主要区别:

  

Area

IIS

IIS Express

发布机制

与操作系统一起发布

可独立发布,内含与WebMatrix,但可分开安装

支持的Windows版本

Windows Vista and Windows 7的特定版本,Windows Server 2003, 2008 and 2008 R2及以上的大多数操作系统

Windows XP, Vista, Windows 7所有版本,Windows Server 2008 and 2008 R2及以上所有版本

支持的.NET Framework

v2.0 SP1以上

v2.0 SP1 以上或更新版本(需要.NET 4.0).

支持的程序设计语言

传统ASP, ASP.NET和PHP

传统ASP, ASP.NET和PHP

 进程模型

Windows Process Activation Service (WAS) 自动管理已设置的网站

 由用户加载或终止网站

Hosted WebCore (或Hostable Web Core) 支持

支持

支持. IIS Express已实现为HWC的上层应用.

支持的协议

HTTP, FTP, WebDAV, HTTPS, 与WCF (包括基于TCP, Named Pipes和MSMQ)

HTTP, HTTPS, 与基于 HTTP的WCF

支持非系统管理员模式

WAS必须以系统管理员权限运行

标准用户即可执行大多数工作.

支持多开发者

不支持

Yes. 配置文件、设置、Web content都是基于每用户自己维护

Visual Studio 支持

Yes

VS 2010 SP1以上,VS 2008 可手动配置

运行时的扩展

 

URL Rewrite 与FastCGI。 IIS Express已内置

管理工具

IIS Manager, appcmd.exe

Appcmd.exe

系统托盘

None

Yes

内建的IIS 模块(验证、授权、压缩等功能)

Yes

Yes

  官方英文原版:

1) 图形操作:

打开 Windows 防火墙的高级设置:

① 控制面板 → Windows 防火墙 → 高级设置

② 创建一条入站规则:协议TCP、端口为8081。

示例图

图片 9

图片 10

二、使用和配置

  iis express早期的时候,需要使用到WebMatrix,现在WebMatrix这个可怜的娃已经被软妹子抛弃了,看来还是功夫不够好 ,呵呵,现在也不多介绍

2) 命令行

也可以执行以下命令添加一条入站规则:

netsh advfirewall firewall Add rule name="命令行Web访问8081" dir=in protocol=tcp localport=8081 action=allow

结果

图片 11

F5运行,仍然出错。

  1.启动和命令行

  在vs中web项目运行时,自动启用IIS express,以系统托盘的方式展现,在图标上右键,即可查看在运行的网站,可手动停止运行;另外,还可以通过命令行的方式运行。

  示例:win7 vs2013

  打开方式: 开始=》所有程序=》Visual Studio 2013 =>Visual Studio Tools=>VS2013 开发人员命令提示

  也可在该目录下找到:C:Program Files (x86)Microsoft Visual Studio 12.0Common7ToolsShortcuts

  常用命令行:

  1.查看网站列表

C:Program Files (x86)Microsoft Visual Studio 12.0>"C:Program FilesIIS Expressappcmd.exe" list site

     图片 12

  2.启动网站

C:Program Files (x86)Microsoft Visual Studio 12.0>"C:Program FilesIIS Expressiisexpress.exe" /siteid:96

  图片 13

  窗口中可看到浏览网站的开始、结束、调用网址、HTTP状态

  注:可将“C:Program FilesIIS Express”加入“系统变量”Path中,就可以直接执行iisexpress.exe和appcmd.exe。

  3.启动一个临时网站

  有些情况下,我们需要启动一个临时的网站(比如快速创建一个临时服务器等),便可以用类似的命令行来创建:

  iisexpress /path:<网站目录> /port:<端口> /clr:<CLR版本,V2.0|V4.0>

  iis express会复制一份配置文件到临时目录,并变更其中的站点信息后再启动,因此不会影响到本机已经配置的网站。

C:Program Files (x86)Microsoft Visual Studio 12.0>"C:Program FilesIIS Expressiisexpress.exe" /path:"G:1code4MVC1baminCodeBaminSolutionBM.Admin" /port:8899 /clr:v4.0 /systray:true

  图片 14

 

第四步:配置URL保留项

在Windows 7,可使用 Netsh.exe 工具配置HTTP设置,允许指定URL通过。

以管理员身份运行cmd命令:

netsh http add urlacl url=http://*:8081/ user=everyone

该命令为所有帐户的指定 URL 命名空间添加一个 URL 保留项

更多netsh资料,可访问相关MSDN:配置 HTTP 和 HTTPS

图片 15

  2.配置文件

    默认情况下IIS Express使用的配置文件位于“我的文档”中,路径如下:“我的文档IIS ExpressConfig”。其中,applicationhost.config 是核心的配置文件,它用于承载站点的定义、应用程序和应用程序池以及整个WEB服务器的配置。由于是放在我的文档中的,所以修改它不需要管理员权限,意味着可以直接修改。在修改后,下次启动应用程序就会起效。

   在applicationhost.config内容中,<system.applicationHost> 用于定义网站和应用程序池。默认情况下,其内容如下:

<system.applicationHost>
    <applicationPools>
        <add name="Clr4IntegratedAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%configaspnet.config" autoStart="true" />
        <add name="Clr4ClassicAppPool" managedRuntimeVersion="v4.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%configaspnet.config" autoStart="true" />
        <add name="Clr2IntegratedAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Integrated" CLRConfigFile="%IIS_USER_HOME%configaspnet.config" autoStart="true" />
        <add name="Clr2ClassicAppPool" managedRuntimeVersion="v2.0" managedPipelineMode="Classic" CLRConfigFile="%IIS_USER_HOME%configaspnet.config" autoStart="true" />
        <add name="UnmanagedClassicAppPool" managedRuntimeVersion="" managedPipelineMode="Classic" autoStart="true" />
        <applicationPoolDefaults managedRuntimeLoader="v4.0">
            <processModel />
        </applicationPoolDefaults>
    </applicationPools>
    <!--   

The <listenerAdapters> section defines the protocols with which the   
Windows Process Activation Service (WAS) binds.   

-->
    <listenerAdapters>
        <add name="http" />
    </listenerAdapters>
    <sites>
        <site name="WebSite1" id="1" serverAutoStart="true">
            <application path="/">
                <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%WebSite1" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation=":8080:localhost" />
            </bindings>
        </site>
        <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
        <virtualDirectoryDefaults allowSubDirConfig="true" />
    </sites>
    <webLimits />
</system.applicationHost>  

  IIS Express 内建了五个应用程序池,分别对应.Net 2.0/4.0的集成/经典模式、以及一个非托管程序池。默认的程序池版本有 <spplicationPoolDefaults> 节来配置。<sites> 节用于配置网站。网站的默认应用程序池和虚拟目录默认配置由 <applicationDefaults> 和 <virtualDirectoryDefaults> 节点配置。以上的节点默认情况下我们并不需要太多关注,因为大多数情况下我们需要关注的只有 <sites> 下的 <site> 节点,这里保存了网站、应用程序的定义,才是我们需要真正关心的。

  【1】.每个 <site> 就是一个网站。

  serverAutoStart 设置了是否随着 IIS Express的启动而自动启动。如果设置为true,那么每次 IIS Express 启动都会自动加载(如果没有指定网站的话),否则只有以指定特定网站的模式运行时才会加载。

  使用IIS Express加载特定网站的语法一: IISExpress.exe /site:<站点名>

  使用IIS Express加载特定网站的语法二: IISExpress.exe /siteid:<id>

  图片 16

  【2】.<site> 下的<bindings>设置了这个站点的绑定信息。

   节点下的每个<binding>都是一个端口绑定信息。典型的绑定配置如下:<binding protocol="http" bindingInformation="*:8080:localhost" />

   protocol 指定了绑定的协议类型(IIS Express内建了 HTTP 和 HTTPS两种协议支持),而“*:8080:localhost”则指定的绑定的具体信息,它有三个部分组成:“绑定的IP:端口:主机名”。

   默认情况下,绑定到任何本地IP、非保留端口、绑定到localhost。

  图片 17

  IIS Express 默认只支持本地连接,不能用ip去访问。

  注意,修改配置文件后,在命令行窗口输入q退出,然后重新加载才生效。【在同一机器测试】

  另外,在书上看到另外一种局域网访问的配置,这里仅记录下

开启外部连接
netsh http add urlacl url=http://*:{端口号}/ user=everyone
关闭外部连接
netsh http delete urlacl url=http://*:{端口号}/

  【3】 <application> 这个节设置了网站的应用程序

  每个网站都需要至少一个映射路径为“/”应用程序(它映射到根目录)。除此之外,你可以继续添加并行的不同路径的 <application> ,这就类似于IIS中的网站里配置的应用程序。

  例如,我需要添加一个单独的应用程序 - 论坛,映射到根目录下的bbs目录,那么我就可以这样配置:

<site name="BM.Admin(1)" id="96">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="G:1code4MVC1baminCodeBaminSolutionBM.Admin" />
    </application>
    <application path="/bbs" applicationPool="Clr2IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="<此应用程序的根目录>" />
        <virtualDirectory path="/content/" physicalPath="</bbs/content/目录对应的虚拟目录>" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:44545:localhost" />
    </bindings>
</site>

   【4】<virtualDirectory> 设置了目录的映射信息

  参见上面展示的代码。在每个<application>节下,必须至少存在一个 path="/" 的 virtualDirectory,它代表了这个目录映射的位置。除此之外,可以手动添加多个映射的路径不同的虚拟目录。

   一份关于site详细配置放在文章尾部,作为附录以便以后使用

 

运行图

图片 18

 

  3.关于管理员身份启动

  IIS Express设计是为了避免需要管理员权限就能完成大部分操作的,但是个别情况下它会要需要管理员权限才能运行。这类的限制包括:

  绑定到了保留的端口(通常位于1024以下的端口,如80、88、443等);

  没有绑定localhost,而是绑定了域名或其它内容;

  使用了HTTPS,但是端口不在44300-44399范围内;

  使用了自己的SSL证书的HTTPS。

  【1】使用了保留的端口

  通常操作系统的HTTP.sys(网络内核)将1024以下的端口设计为保留端口,如果IIS Express需要绑定到这些端口,则需要它拥有管理员权限,否则就会失败。错误类似这样:

图片 19

  反映到系统的日志中,就是这样的错误:

图片 20

  要解决这个问题,很简单,只要将端口绑定到非保留端口即可(大于1024),或使用管理员身份启动它备注1。

  【2】绑定了其它域名

  默认情况下,IIS Express只能绑定到 localhost。如果需要绑定到具体的域名供外部访问而又没有解决方案,那么就会遭遇到失败的问题。

  要解决,也很简单——就是使用管理员身份启动它备注1。

  【3】使用了HTTPS,但是端口不在 44300-44399之内

  IIS Express用于承载HTTPS站点测试时,端口会限制在44300-44399之内,这同样是操作系统的限制。如果超过了这个范围,则需要以管理员身份启动它才能正常工作备注1。

  【4】使用了自己的SSL证书的HTTPS

  IIS Express默认会安装一个测试的自签名证书用于开发,这允许开发人员在没有SSL证书的情况下进行开发。但是如果站点使用了自己的SSL证书,则会导致IIS Express需要管理员身份才能启动备注1。

 

2. 设置外网访问

设置好内网可访问后,想要外网的小伙伴访问本机,可通过以下2种方法:

1) 端口映射

2) 内网穿透

这时候我知道了是Web调试器没有启动,但是却不明白为什么。于是检查IIS8.5的安装情况,把一些可能需要安装的都给装了。

  Site详细配置

<sites>
            <!-- site 站点 如果启动了右击托盘IISExpress就能看到,可以在sites下面添加多个site节点   serverAutoStart=true 是指定站点是否随服务器启动,但是这个属性我并没有看到作用,不管是否设置都是启动第一个站点 -->
            <site name="WebSite1" id="1"  serverAutoStart="true" >
                <!-- application应用程序 和在iis中添加的应用程序一样的-->
                <application path="/">
                    <!-- virtualDirectory虚拟目录  %IIS_SITES_HOME%是C:Program FilesIIS Express  -->
                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%WebSite1" />
                </application>
                <!-- 可以添加多个path不重复的application  下面applicationDefaults会默认应用程序池,但是也可以指定应用程序池-->
                <!-- 这里有个问题如果applicationPool是Clr2IntegratedAppPool 但sites的applicationDefaults是Clr4IntegratedAppPool,则这个虚拟目录就不能被启动访问
                  目前我只能通过将applicationDefaults设置为Clr2IntegratedAppPool才可以启动,并不清楚怎么给不同网站 指定不一样的程序池并启动-->
                <application path="/test"  applicationPool="Clr2IntegratedAppPool">
                    <!-- 可以添加多个虚拟目录 和iis中添加虚拟目录一样-->
                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%WebSite1" />
                    <virtualDirectory path="/testvir" physicalPath="%IIS_SITES_HOME%WebSite1" />
                </application>
                <bindings>
                    <!-- binding站点绑定信息  protocol有http和https两种   bindingInformation指定绑定具体信息 :8080:localhost=>:端口:主机名" -->
                    <binding protocol="http" bindingInformation=":8080:localhost" />
                    <!-- 同一个网站绑定多个端口 -->
                    <binding protocol="http" bindingInformation=":8899:localhost" />
                    <!-- 通常在IIS发布的网站 用localhost 也一定可以用127.0.01访问 但是这里不行,必须手工绑定 -->
                    <binding protocol="http" bindingInformation=":8080:127.0.0.1" />
                    <!-- 局域网对应的IP地址也是需要自己绑定的  局域网其他用户才能通过ip访问-->
                    <binding protocol="http" bindingInformation=":8080:192.168.230.128" />
                </bindings>
            </site>
            <!-- 可以添加多个site节点  但是必须是name和id 都不重复的-->
            <site name="WebSite2" id="2" serverAutoStart="true" >
                <application path="/test">
                    <virtualDirectory path="/" physicalPath="%IIS_SITES_HOME%WebSite1" />
                </application>
                <bindings>
                    <binding protocol="http" bindingInformation=":8080:localhost" />
                </bindings>
            </site>
            <siteDefaults>
                <!--   %IIS_USER_HOME%是"我的文档"的路径   Logs下是访问站点的记录   -->
                <logFile logFormat="W3C" directory="%IIS_USER_HOME%Logs" />
                <traceFailedRequestsLogging directory="%IIS_USER_HOME%TraceLogFiles" enabled="true" maxLogFileSizeKB="1024" />
            </siteDefaults>
            <!--applicationDefaults 指定站点的默认应用程序池  在sites上面有applicationPools节点,可以在那看到有五个应用程序池,分别是.Net2.0/4.0的集成/经典模式、以及一个非托管程序池-->
            <applicationDefaults applicationPool="Clr4IntegratedAppPool" />
            <virtualDirectoryDefaults allowSubDirConfig="true" />
        </sites>

 

 

 

 阅读的相关文章:

 

2.1 端口映射

前提条件:拥有路由器设置权限。

在对外的路由器中设置一条端口映射规则,访问外部IP地址时跳转到局域网机器上。具体操作这里不阐述。

图片 21

2.2 内网穿透

在公司内开发web应用时,不是所有人都可以申请端口映射的权限,所以这时候就要有个内网穿透的解决方案了。

网络上提供内网穿透的应用有很多,这里使用的是花生壳(官网:

示例

图片 22

注意:微信OAuth2.0进行域名跳转时会加上端口号,此时域名端口为80,本机端口为8081,跳转后的地址为域名:8081会显示错误。解决方法只需要设置本机web应用的端口也为80即可。

 

运行图

图片 23

End C#文章导航 菜单加载中...

F5运行,问题依旧。

 

问题焦点已经很清楚了,就是IIS Express未能启动。于是想到查看事件,看有没有记录更具体的日志。

图片 24

 

相关的事件有三条,前两条相同,分别如下。

图片 25

 

图片 26

 

怎么和iisnode有关系,我们知道,iisnode是集成在IIS中用于托管node.js应用程序来取代自托管node.exe进程的一个模块。

“C:Program Files (x86)iisnode-devreleasex86iisnode.dll”根本就不存在,这下更加晕了。为什么IIS Express会启动失败还是不清楚。

我决定要彻底搞清楚IIS Express到底是什么东西。

 

===============================华丽分割线==============================

 

当前程序员只能通过下面两种Web服务器之一来开发和测试ASP.NET网站程序:

  1. Visual Studio自带的ASP.NET开发服务器(webdev.exe)。

  2. Windows自带的IIS Web服务器。

 

上面两个方案各有优缺点,而且很多ASP.NET程序员告诉我们:“我希望有一个像ASP.NET开发服务器那样容易使用,但是功能又跟IIS一样强大的服务器”。今天我很高兴地宣布,我们将提供另一个新的、免费的、综合了前两个方案的优点的选择—IIS Express,它的出现使得开发和运行ASP.NET网站程序变得更为容易。

 

IIS Express支持VS 2010和Visual Web Develop 2010 Express,可以运行在Windows XP和更高的版本上,它不需要管理员权限即可运行,也不要求代码做任何的改动。你可以用它开发所有类型的ASP.NET程序,而且它还支持完整的IIS 7.x功能集。

 

现有方案

在详细介绍IIS Express之前,我们先来看看ASP.NET开发服务器和IIS的工作方式。

ASP.NET开发服务器

Visual Studio自带的ASP.NET开发服务器(开发代号“Cassini”)的优势在于简练和便于快速启动。它不需要监听远程连接请求(因此在大部分企业的安全网络环境中都可以使用它),你甚至都不需要使用管理员账号就能启动它,而且它也不要求额外的安装步骤。

正是因为具备启动方便这一巨大优势,才使得它成为ASP.NET项目的默认服务器,当你在Visual Studio中按下F5时就会启动它。

图片 27

但ASP.NET开发服务器的缺点是它不提供完整的Web服务器功能。比如说,它不支持SSL,URL重写规则,自定义安全设置,和其它在IIS 7中支持的功能。

IIS Web服务器

用Visual Studio运行和测试程序还有第二个选择— IIS。你可以通过右键单击Visual studio中的Web项目,打开它的属性(在属性窗口中单击“Web”标签)来配置Web工程使用IIS。

图片 28

使用IIS作为你的开发服务器允许你测试完整的Web服务器具备的功能(SSL,URL重写规则等)。IIS是一个货真价实的Web服务器—这意味着和在作业服务器上部署差不多开发环境。

但是采用IIS的缺点是,有些公司并不允许在开发机上安装完整的Web服务器。IIS还要求使用管理员帐号来安装和调试网站。不同版本的Windows又支持不同版本的IIS。例如,在Windows XP上,你只能使用自带的IIS 5.1—所有IIS 7.x的新功能它都不支持。另外,在VS里配置网站项目使用IIS,还得一些额外的安装和配置步骤。

IIS Express — “鱼”和“熊掌”兼得

IIS Express综合了ASP.NET开发服务器易用性的优势和IIS强大的功能。确切地说:

  • 它简练并且易于安装(文件大小不到10兆而且安装速度相当快)。
  • 在Visual Studio中不需要管理员权限即可启动和调试程序。
  • 提供了完整的Web服务器功能——包括SSL, URL重写,多媒体支持和所有其他的IIS 7.x模块。
  • 它的可扩展模型和web.config配置结构和IIS 7.x是一样的。
  • 它可以和IIS Web服务器还有ASP.NET开发服务器同时运行在同一台机器上(他们不会相互冲突)。
  • 它支持Windows XP及更高版本的操作系统—在所有操作系统平台上提供了完整的IIS 7.x功能集。

IIS Express(跟ASP.NET开发服务器一样)可以快速地从硬盘上的某个文件夹上启动网站程序。它不需要任何注册或配置步骤。在网站开发过程中,这个特性使启动和运行网站显得相当便捷。

与VS的整合

Visual Studio 2010的SP1引入了IIS Express支持。你将可以配置VS 2010使用它取代ASP.NET开发服务器作为ASP.NET项目默认的Web服务器。跟现在的ASP.NET开发服务器一样,你不需要在IIS Express里注册站点或者虚拟目录。它支持和ASP.NET开发服务器相同的使用方法——只是添加了更多的功能而已。

当你按下F5来运行ASP.NET项目时,Visual Studio自动启动IIS Express并且使用它来运行和调试网站程序(不需要额外的配置)。跟ASP.NET开发服务器一样,IIS Express运行时,会在任务栏的通知区域显示一个小图标:

图片 29

右键单击上面的图标并选择“退出”就可以快速关闭IIS Express。你也可以通过右键单击来列出正在运行的站点列表,还有站点的文件夹路径以及使用的.NET版本:

图片 30

[备注:上图IIS Express为英文版]

请注意上图中两个很酷的地方:

  1. 正在运行的站点“Test Site”,还有IIS Express本身,保存在硬盘的c:users[用户名]文件夹中。这就允许非管理员用户使用IIS Express和网站,而且还支持一些现在的IIS服务器没有办法实现的场景(例如可以在受限的企业网络环境或受限的学校公共电脑上运行IIS Express)。

  2. 上面正在运行的站点“Test Site”同时支持HTTP和HTTPS的访问方式。IIS Express通过自动安装“自签名证书”来支持URL访问控制列表(URL ACL)和SSL认证,这样程序员(以非管理员用户登录电脑)可以在不需要提升用户权限,或执行额外设置的情况下就可以使用SSL。这个功能允许你在程序中为SSL设置需要保护的页面(比如登录页面),并且在开发过程中象在真实的web服务器里那样运行和测试这些页面。

IIS 7.x功能集

IIS Express就像你现在已经熟悉的ASP.NET开发服务其那样容易启动和使用。 但是因为IIS Express是基于与IIS 7x相同的代码,你可以用到完整Web服务器的功能集合。这也就意味着你可以像在真实的作业Web服务器上创建和运行你的程序。除了SSL,你还可以使用 IIS 7.x的URL重写模块、多媒体插件、动态内容压缩、高级日志功能、自定义安全策略和其他丰富多彩的模块。

除了支持ASP.NET以外,IIS Express还支持传统的ASP和其他被IIS支持的文件类型—这也使得它成为整合多种技术的站点的理想平台。

总结

IIS Express使得开发、运行和测试Web程序更加容易。它支持ASP.NET的所有版本和所有应用程序类型(包括ASP.NET Web窗体程序和ASP.NET MVC程序)。最好不过的是—你不需要改动任何代码来使用它。你将可以在所有已有的项目中选用它。

针对VS2010发布SP1补丁程序,这个补丁程序将用IIS Express替换掉原来内置的ASP.NET开发服务器。后续版本的Visual Studio都内置了IIS Express。

======================================华丽分割线====================================

 

既然VS2013都内置了IIS Express8.0,为什么又会出现启动失败的情况呢

在IIS Express的下载页面似乎找到了答案,

图片 31

 

看到WebMatrix没,以前用过它的2.0版,它的任务栏图标和IISExpress是相同的呢,莫非要安装它。

安装WebMatrix3.0后,打开项目,F5启动,问题解决!

 

图片 32

 

============================================= 2014-6-26 更新

在此感谢@断红深处的回复,终于找到原因了。

首先,我们之前调试报错是因为注册表中缺少这一项“Use64BitIISExpress”,安装WebMatrix3.0会在注册表中默认写入这一项。不管是调试32位还是64位,

这一项对于启动IIS Express来说是关键。下面我们来讨论一下怎么调试64位的Web程序。

如下,把目标平台设置为64位。

图片 33

如果按照默认方式启动是会报如下错误的。

“未能加载文件或程序集“MvcApplication2”或它的某一个依赖项。试图加载格式不正确的程序。”

如果我们想在Visual Studio2013上调试64位ASP.NET MVC的网站(本机环境X64),需要把IIS Express设置成默认的64位开发服务器。

我们可以通过修改注册表来进行设置,方法如下:

1.通过命令行直接写入:

“reg add HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio12.0WebProjects /v Use64BitIISExpress /t REG_DWORD /d 1”

拷贝上面的命令行到记事本中,保存后修改后缀名为bat或cmd,双击运行即可。

2.第二种方法是手动添加键值:

打开“运行”,输入“RegEdit”回车打开注册表编辑器。

定位到:“HKEY_CURRENT_USERSoftwareMicrosoftVisualStudio12.0WebProjects”

确保有一个名为“Use64BitIISExpress”REG_DWORD值。如果没有,请创建它。

修改该项的基数为16进制的数值数据值为1(默认值=0)。现在,您可以调试64位的网站了。(PS:这里值为0时则只能调试32位的网站。)

图片 34

 

完成上面的修改后,你还需要确认下面这一项已经勾选。

图片 35

 

修改完成,按F5成功运行网站程序后,我们可以在任务管理器的进程项中看到IIS Express的进程后不带32的字样,说明当前启动的为64位。下面附两张图作对比:

图片 36

上图:32位

 

图片 37

上图:64位

 

需要注意的是,需改完注册表的值后需要重启Visual Studio2013,并且是以管理员的权限启动,不然会报下面的错。

“未能加载文件或程序集“Antlr3.Runtime.DLL”或它的某一个依赖项。拒绝访问。”

OK,现在我们可以正常的调试64位Web程序了。

 

参考:

Debugging VS2013 Websites Using 64-bit IIS Express

Can't get IIS Express 8 beta to run website as 64-bit process

 

 

本文由澳门新浦京娱乐场网站发布于www.146.net,转载请注明出处:Web应用调试开启外部访问,Web解决办法