IIS的WebGarden、WebFarm和StateServer

   2023-02-10 学习力0
核心提示:前言                                公司系统虽然配置有1台NLB后拖4台App Server最后搭一台强劲无比的DB Server,但每天下午4点左右总被投诉系统慢,报表下载不了等问题。究其原因,原来NLB采用锁定sessionId转发请求,而II

前言                              

  公司系统虽然配置有1台NLB后拖4台App Server最后搭一台强劲无比的DB Server,但每天下午4点左右总被投诉系统慢,报表下载不了等问题。究其原因,原来NLB采用锁定sessionId转发请求,而IIS的最大工作进程数却是1而已,只能通过增加工作线程的方式来提高并发量,但增加线程会消耗更多内存,当所占内存接近2G时应用48%左右的执行时间被分配给GC工作了,也就是说负载增大时上述硬件配置并然卵。那解决方案明显如下:

  1. NLB采用实际负载请求转发请求;

  2. IIS采用WebGarden模式;

  3. 多台IIS组成WebFarm;

  4. 为实现IIS的WebGarden和WebFarm工作模式,需要配置启用StateServer。

  另外,由于前期开发阶段大家并不清楚采用IIS WebGarden模式运行所带来的限制,因此还要对代码进行分析、调整。

  本文作为上段时间工作内容时查阅资料的整理总结,以便日后查阅。

 

何为WebGarden & WebFarm?                

  IIS默认配置下采用的是单工作进程的工作模式,也就是只启用一个w3wp.exe进程处理所有请求,然后进程内启用多个线程来处理并发请求,最大工作线程数由具体的操作系统和IIS来决定,当并发量大于线程数时则会让请求排队等待处理。这是面对高并发量,且部分请求处理耗时较长时就会造成大部分请求长期处于挂起的状态,用户感知就是慢,TMD慢。。。。

  WebGarden其实就是IIS的多工作进程的工作模式,而WebFarm则是多台IIS应用服务器作负载均衡。

  默认情况下(No WebGarden, No WebFarm):

IIS的WebGarden、WebFarm和StateServer

  WebGarden:

  IIS的WebGarden、WebFarm和StateServer

  WebFarm:

  IIS的WebGarden、WebFarm和StateServer

  配置WebGarden

    在IIS 6中,右键单击“应用程序池” > “属性” > 转到“性能”选项卡。在“性能”选项卡部分,有一个“Web Garden”的选项,默认值为“1”,您可以将该值设置为您需要的数值。

    IIS的WebGarden、WebFarm和StateServer

    在IIS 7中,右键单击“应用程序池” > 转到“高级设置” > 找到“进程模型”,下面有个“最大工作进程”项。

    IIS的WebGarden、WebFarm和StateServer

    开启WebGarden是不是很简单呢?那问题落在到底maxWorkerProcesses设置多少才适合呢?一般建议设置为“逻辑核数”即可。

  到底WebGarden针对哪种场景,又有什么好处呢?

    对于上述的问题,我想前IIS PM Chris Adams给出的答案会更准确(http://blogs.iis.net/chrisad/1342059

Web gardens was designed for one single reason – Offering applications that are not CPU-bound but execute long running requests the ability to scale and not use up all threads available in the worker process.

     从Chris Adams处我们可知WebGarden的目的是针对大量长链接的情景,通过增加工作进程来增加可用的工作线程。

    另外,我想大家都有过这样的经历。maximum worker processes为1时,并发量上扬时w3wp.exe所占的内存(专用工作集/专用字节)会急速上升,当所占内存接近2GB时响应延时就变得十分严重,唯一的办法就是等待、等待、等待。。。。。。要不就回收进程释放内存,但这时会中断用户的请求。

    那为什么会这样呢?

    1. 首先需要明确的是 工作线程 对应 请求 是一一对应的,因此当接收到N个请求时,就会开启N个工作线程处理请求,若请求量超过最大工作线程数时则会让请求排队;

    2. 线程本身也占内存资源,就线程栈空间而言,IIS5/6每个线程栈空间就占256KB,而Windows Server 2000下则占1MB。对于Windows Server 2008下的IIS7而言,32bit则占256KB,64bit则占512KB。极端情况下即使新开的线程所处理的程序入参和局部变量只使用1KB,但线程栈依然会占512KB。更不用说程序中还用到大量堆空间的对象了;

    3. 进程是分配内存资源的最小单位,也就所有工作线程均使用同一块内存空间,更重要的是所有工作线程采用同一套GC机制,那么当执行GC时将挂起所有工作线程;

    4. 虽然Windows Server2008 64Bit对进程所占的内存空间没有设置上限,但若进程所占内存空间大且托管堆中含大量一次性对象那么必然会引起频繁的GC操作。(极端情况下GC占进程的执行时间片的48%左右)

    也就是我们通过“任务管理器”查看w3wp.exe内存占用率升高时,响应延时增大的根本原因是:工作进程中托管堆存在大量临时对象,导致频繁执行GC操作,而GC操作执行时会挂起所有工作线程,导致请求处理的延时增大。

    而WebGarden就是将工作线程均匀分配到多个工作进程中,那么各工作进程所占用的内存相对较少,减少GC操作和每次GC执行的时间,并且即使执行GC操作也不会挂起所有工作线程,从而提供并发处理量。

 

StateServer配置流程                      

    配置WebGarden和WebFarm后,每个请求将由不同的工作进程或应用服务器处理,那么之前保存在工作进程所占内存中的SessionTable和缓存信息将无法共享。最明显的例子就是通过将用户的登陆信息保存在SesisonTable中,当启用WebGarden时,用户不定时被告知需要重新登陆。这是由于请求被分配到另一个工作进程处理,而该工作进程没有对应的SessionTable记录。

  这时我们需要配置一***立共享的StateServer来保存Sessoin等信息的服务器。

  对于WebGarden:

  IIS的WebGarden、WebFarm和StateServer

   对于WebFarm:

  IIS的WebGarden、WebFarm和StateServer

  下面我们一步步配置吧!

   1. 服务器配置

       1). 安装ASP.NET State Service组件:控制面板->程序和功能->打开或关闭Windows功能->Internet信息服务->万维网服务->应用程序开发功能->ASP.NET

       2). 在“运行”面板上输入regedit进入注册表,进入HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/aspnet_state/Parameters

            修改AllowRemoteConnection,用于配置可被远程链接的链接数,0表示仅能本机链接;

            修改Port,用于配置State Service的端口号,一般采用默认42424即可。

   3). 启动/重启State Service:计算机->管理->服务->ASP.NET State Service 启用,自动。

   2. Web.config配置

       配置位于<system.web>下的<sessionState>节点

IIS的WebGarden、WebFarm和StateServer
 <!--Session 配置。Session 为请求的当前上下文保存用户配置,每个用户独立。不建议存放大量数据。
        mode: 
          Off: 设置为不使用Session功能
          InProc: 默认值,在 IIS 进程中保存 Session,无存储类型、大小限制,性能高,但容易丢失。
          StateServer:在 Windows 服务进程中保存 Session,序列化存储,无大小限制,不依赖 Web 服务器,不容易丢失,但序列化消耗 CPU 性能。
          SQLServer:在 SQL Server 中保存 Session,序列化存储,无大小限制,不依赖 Web 服务器,不容易丢失,但序列化消耗 CPU 性能。
          Custom:
        cookieless:
          true 使用Cookieless模式;这时客户端的Session信息就不再使用Cookie存储了,而是将其通过URL存储。比如网址为http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.aspx
          false 使用Cookie模式,这是默认值。
        timeout 
          设置经过多少分钟后服务器自动放弃Session信息。默认为20分钟。
        stateConnectionString 
          设置将 Session 信息存储在状态服务中时使用的服务器名称和端口号,例如:"tcpip=127.0.0.1:42424”。当mode的值是StateServer是,这个属性是必需的。(42424是默认端口)。
        sqlConnectionString 
          设置与 SQL Server 连接时的连接字符串。例如 "data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。当mode的值是SQLServer时,这个属性是必需的。
        stateNetworkTimeout 
          设置当使用 StateServer 模式存储 Session 状态时,经过多少秒空闲后,断开Web服务器与存储状态信息的服务器的 TCP/IP 连接的。默认值是10秒钟。-->
<sessionState mode="Off|InProc|StateServer|SQLServer"
   cookieless="true|false"
   timeout="number of minutes"
   stateConnectionString="tcpip=server:port"
   sqlConnectionString="sql connection string"
   stateNetworkTimeout="number of seconds"
  /> 
IIS的WebGarden、WebFarm和StateServer

 示例:<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" timeout="2880" />

 对于没有启用WebFarm而言,上述StateServer配置已经可OK了。但倘若启用WebFarm,那还要配置以下两项:

 1. 配置MachineKey

   machineKey作为加密/解密秘钥。负载均衡时必须配置,否则会报“无法验证的错误”之类的问题。

     默认情况下ASP.NET会自动生成一组machineKey,但作负载均衡时各台应用服务器所生成的均不同,则会导致无法正确加密解密共享信息。

<machineKey validationKey="86B6275BA31D3D713E41388692FCA68F7D20269411345AA1C17A7386DACC9C46E7CE5F97F556F3CF0A07159659E2706B77731779D2DA4B53BC47BFFD4FD48A54" decryptionKey="9421E53E196BB56DB11B9C25197A2AD470638EFBC604AC74CD29DBBCF79D6046" validation="SHA1" decryption="AES"/> 

    machineKey的生成函数

IIS的WebGarden、WebFarm和StateServer
生成machineKey:

public static string CreateKey(int len)
{
byte[] bytes = new byte[len];
new RNGCryptoServiceProvider(). GetBytes(bytes);
StringBuilder sb = new StringBuilder();
for(int i = 0; i < bytes. Length; i++)
      {
sb. Append(string. Format("{0:X2}",bytes[i]));
      }
return sb. ToString();
}


使用:

validationKey = CreateKey(20);
decryptionKey = CreateKey(24);
IIS的WebGarden、WebFarm和StateServer

  2. 配置AppID

   StateServer中Session信息的ID实际上是由AppID和用户的SessionID组成,因此若部署在多台应用服务器上的网站的AppID不同,则会导致Session信息丢失的问题。

   IIS7下配置AppID

     IIS的WebGarden、WebFarm和StateServer

   IIS6下配置AppID

  方式1:在CMD下输入 cd c:\Inetpub\AdminScripts 

                然后输入 cscript adsutil.vbs move w3svc/999 w3svc/2 意思是将AppID从999改为2。

      方式2:修改MetaBase.xml文件。

 

Q&A                            

  Q:为何我按照上述内容配置WebGarden和StateServer,但偶然间会报如下错误呢?

IIS的WebGarden、WebFarm和StateServer

   A:由于存放复杂的自定义结构体到SessionTable了,在做反序列化时报错了。建议只存放String、Int32等简单类型的数值到SessionTable,然后以它们为键再在程序中获取其它属性。

 

总结                              

  上述内容若有纰漏请各位指正,谢谢。

  尊重原创,转载请注明来自: http://www.cnblogs.com/fsjohnhuang/p/5244785.html^_^肥子John 

 

感谢                              

https://support.microsoft.com/en-gb/kb/932909

http://kb.cnblogs.com/page/122612/

https://blogs.msdn.microsoft.com/httpcontext/2012/06/22/shared-session-state-in-a-iis6-and-iis7-web-farm/

 

如果您觉得本文的内容有趣就扫一下吧!捐赠互勉!

前言                              

  公司系统虽然配置有1台NLB后拖4台App Server最后搭一台强劲无比的DB Server,但每天下午4点左右总被投诉系统慢,报表下载不了等问题。究其原因,原来NLB采用锁定sessionId转发请求,而IIS的最大工作进程数却是1而已,只能通过增加工作线程的方式来提高并发量,但增加线程会消耗更多内存,当所占内存接近2G时应用48%左右的执行时间被分配给GC工作了,也就是说负载增大时上述硬件配置并然卵。那解决方案明显如下:

  1. NLB采用实际负载请求转发请求;

  2. IIS采用WebGarden模式;

  3. 多台IIS组成WebFarm;

  4. 为实现IIS的WebGarden和WebFarm工作模式,需要配置启用StateServer。

  另外,由于前期开发阶段大家并不清楚采用IIS WebGarden模式运行所带来的限制,因此还要对代码进行分析、调整。

  本文作为上段时间工作内容时查阅资料的整理总结,以便日后查阅。

 

何为WebGarden & WebFarm?                

  IIS默认配置下采用的是单工作进程的工作模式,也就是只启用一个w3wp.exe进程处理所有请求,然后进程内启用多个线程来处理并发请求,最大工作线程数由具体的操作系统和IIS来决定,当并发量大于线程数时则会让请求排队等待处理。这是面对高并发量,且部分请求处理耗时较长时就会造成大部分请求长期处于挂起的状态,用户感知就是慢,TMD慢。。。。

  WebGarden其实就是IIS的多工作进程的工作模式,而WebFarm则是多台IIS应用服务器作负载均衡。

  默认情况下(No WebGarden, No WebFarm):

IIS的WebGarden、WebFarm和StateServer

  WebGarden:

  IIS的WebGarden、WebFarm和StateServer

  WebFarm:

  IIS的WebGarden、WebFarm和StateServer

  配置WebGarden

    在IIS 6中,右键单击“应用程序池” > “属性” > 转到“性能”选项卡。在“性能”选项卡部分,有一个“Web Garden”的选项,默认值为“1”,您可以将该值设置为您需要的数值。

    IIS的WebGarden、WebFarm和StateServer

    在IIS 7中,右键单击“应用程序池” > 转到“高级设置” > 找到“进程模型”,下面有个“最大工作进程”项。

    IIS的WebGarden、WebFarm和StateServer

    开启WebGarden是不是很简单呢?那问题落在到底maxWorkerProcesses设置多少才适合呢?一般建议设置为“逻辑核数”即可。

  到底WebGarden针对哪种场景,又有什么好处呢?

    对于上述的问题,我想前IIS PM Chris Adams给出的答案会更准确(http://blogs.iis.net/chrisad/1342059

Web gardens was designed for one single reason – Offering applications that are not CPU-bound but execute long running requests the ability to scale and not use up all threads available in the worker process.

     从Chris Adams处我们可知WebGarden的目的是针对大量长链接的情景,通过增加工作进程来增加可用的工作线程。

    另外,我想大家都有过这样的经历。maximum worker processes为1时,并发量上扬时w3wp.exe所占的内存(专用工作集/专用字节)会急速上升,当所占内存接近2GB时响应延时就变得十分严重,唯一的办法就是等待、等待、等待。。。。。。要不就回收进程释放内存,但这时会中断用户的请求。

    那为什么会这样呢?

    1. 首先需要明确的是 工作线程 对应 请求 是一一对应的,因此当接收到N个请求时,就会开启N个工作线程处理请求,若请求量超过最大工作线程数时则会让请求排队;

    2. 线程本身也占内存资源,就线程栈空间而言,IIS5/6每个线程栈空间就占256KB,而Windows Server 2000下则占1MB。对于Windows Server 2008下的IIS7而言,32bit则占256KB,64bit则占512KB。极端情况下即使新开的线程所处理的程序入参和局部变量只使用1KB,但线程栈依然会占512KB。更不用说程序中还用到大量堆空间的对象了;

    3. 进程是分配内存资源的最小单位,也就所有工作线程均使用同一块内存空间,更重要的是所有工作线程采用同一套GC机制,那么当执行GC时将挂起所有工作线程;

    4. 虽然Windows Server2008 64Bit对进程所占的内存空间没有设置上限,但若进程所占内存空间大且托管堆中含大量一次性对象那么必然会引起频繁的GC操作。(极端情况下GC占进程的执行时间片的48%左右)

    也就是我们通过“任务管理器”查看w3wp.exe内存占用率升高时,响应延时增大的根本原因是:工作进程中托管堆存在大量临时对象,导致频繁执行GC操作,而GC操作执行时会挂起所有工作线程,导致请求处理的延时增大。

    而WebGarden就是将工作线程均匀分配到多个工作进程中,那么各工作进程所占用的内存相对较少,减少GC操作和每次GC执行的时间,并且即使执行GC操作也不会挂起所有工作线程,从而提供并发处理量。

 

StateServer配置流程                      

    配置WebGarden和WebFarm后,每个请求将由不同的工作进程或应用服务器处理,那么之前保存在工作进程所占内存中的SessionTable和缓存信息将无法共享。最明显的例子就是通过将用户的登陆信息保存在SesisonTable中,当启用WebGarden时,用户不定时被告知需要重新登陆。这是由于请求被分配到另一个工作进程处理,而该工作进程没有对应的SessionTable记录。

  这时我们需要配置一***立共享的StateServer来保存Sessoin等信息的服务器。

  对于WebGarden:

  IIS的WebGarden、WebFarm和StateServer

   对于WebFarm:

  IIS的WebGarden、WebFarm和StateServer

  下面我们一步步配置吧!

   1. 服务器配置

       1). 安装ASP.NET State Service组件:控制面板->程序和功能->打开或关闭Windows功能->Internet信息服务->万维网服务->应用程序开发功能->ASP.NET

       2). 在“运行”面板上输入regedit进入注册表,进入HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/aspnet_state/Parameters

            修改AllowRemoteConnection,用于配置可被远程链接的链接数,0表示仅能本机链接;

            修改Port,用于配置State Service的端口号,一般采用默认42424即可。

   3). 启动/重启State Service:计算机->管理->服务->ASP.NET State Service 启用,自动。

   2. Web.config配置

       配置位于<system.web>下的<sessionState>节点

IIS的WebGarden、WebFarm和StateServer
 <!--Session 配置。Session 为请求的当前上下文保存用户配置,每个用户独立。不建议存放大量数据。
        mode: 
          Off: 设置为不使用Session功能
          InProc: 默认值,在 IIS 进程中保存 Session,无存储类型、大小限制,性能高,但容易丢失。
          StateServer:在 Windows 服务进程中保存 Session,序列化存储,无大小限制,不依赖 Web 服务器,不容易丢失,但序列化消耗 CPU 性能。
          SQLServer:在 SQL Server 中保存 Session,序列化存储,无大小限制,不依赖 Web 服务器,不容易丢失,但序列化消耗 CPU 性能。
          Custom:
        cookieless:
          true 使用Cookieless模式;这时客户端的Session信息就不再使用Cookie存储了,而是将其通过URL存储。比如网址为http://localhost/MyTestApplication/(ulqsek45heu3ic2a5zgdl245)/default.aspx
          false 使用Cookie模式,这是默认值。
        timeout 
          设置经过多少分钟后服务器自动放弃Session信息。默认为20分钟。
        stateConnectionString 
          设置将 Session 信息存储在状态服务中时使用的服务器名称和端口号,例如:"tcpip=127.0.0.1:42424”。当mode的值是StateServer是,这个属性是必需的。(42424是默认端口)。
        sqlConnectionString 
          设置与 SQL Server 连接时的连接字符串。例如 "data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。当mode的值是SQLServer时,这个属性是必需的。
        stateNetworkTimeout 
          设置当使用 StateServer 模式存储 Session 状态时,经过多少秒空闲后,断开Web服务器与存储状态信息的服务器的 TCP/IP 连接的。默认值是10秒钟。-->
<sessionState mode="Off|InProc|StateServer|SQLServer"
   cookieless="true|false"
   timeout="number of minutes"
   stateConnectionString="tcpip=server:port"
   sqlConnectionString="sql connection string"
   stateNetworkTimeout="number of seconds"
  /> 
IIS的WebGarden、WebFarm和StateServer

 示例:<sessionState mode="StateServer" stateConnectionString="tcpip=localhost:42424" timeout="2880" />

 对于没有启用WebFarm而言,上述StateServer配置已经可OK了。但倘若启用WebFarm,那还要配置以下两项:

 1. 配置MachineKey

   machineKey作为加密/解密秘钥。负载均衡时必须配置,否则会报“无法验证的错误”之类的问题。

     默认情况下ASP.NET会自动生成一组machineKey,但作负载均衡时各台应用服务器所生成的均不同,则会导致无法正确加密解密共享信息。

<machineKey validationKey="86B6275BA31D3D713E41388692FCA68F7D20269411345AA1C17A7386DACC9C46E7CE5F97F556F3CF0A07159659E2706B77731779D2DA4B53BC47BFFD4FD48A54" decryptionKey="9421E53E196BB56DB11B9C25197A2AD470638EFBC604AC74CD29DBBCF79D6046" validation="SHA1" decryption="AES"/> 

    machineKey的生成函数

IIS的WebGarden、WebFarm和StateServer
生成machineKey:

public static string CreateKey(int len)
{
byte[] bytes = new byte[len];
new RNGCryptoServiceProvider(). GetBytes(bytes);
StringBuilder sb = new StringBuilder();
for(int i = 0; i < bytes. Length; i++)
      {
sb. Append(string. Format("{0:X2}",bytes[i]));
      }
return sb. ToString();
}


使用:

validationKey = CreateKey(20);
decryptionKey = CreateKey(24);
IIS的WebGarden、WebFarm和StateServer

  2. 配置AppID

   StateServer中Session信息的ID实际上是由AppID和用户的SessionID组成,因此若部署在多台应用服务器上的网站的AppID不同,则会导致Session信息丢失的问题。

   IIS7下配置AppID

     IIS的WebGarden、WebFarm和StateServer

   IIS6下配置AppID

  方式1:在CMD下输入 cd c:\Inetpub\AdminScripts 

                然后输入 cscript adsutil.vbs move w3svc/999 w3svc/2 意思是将AppID从999改为2。

      方式2:修改MetaBase.xml文件。

 

Q&A                            

  Q:为何我按照上述内容配置WebGarden和StateServer,但偶然间会报如下错误呢?

IIS的WebGarden、WebFarm和StateServer

   A:由于存放复杂的自定义结构体到SessionTable了,在做反序列化时报错了。建议只存放String、Int32等简单类型的数值到SessionTable,然后以它们为键再在程序中获取其它属性。

 

总结                              

  上述内容若有纰漏请各位指正,谢谢。

  尊重原创,转载请注明来自: http://www.cnblogs.com/fsjohnhuang/p/5244785.html^_^肥子John 

 

感谢                              

https://support.microsoft.com/en-gb/kb/932909

http://kb.cnblogs.com/page/122612/

https://blogs.msdn.microsoft.com/httpcontext/2012/06/22/shared-session-state-in-a-iis6-and-iis7-web-farm/

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Server Application Error IIS密码不同步 MS D
    最近电脑出了一系列的问题,IIS能启动,但是不能正常访问.提示错误.记得没事养成看系统日志的习惯,先看系统日志有一些红色的叉叉,出现的频率非常高.MS DTC 事务管理器启动失败。LogInit 返回错误 0x2。具体的是什么服务,我就不写了,百度一下非常多. 我想出现这
    03-08
  • Visual Studio-IIS Express 支持局域网访问配置
    转自:http://www.itnose.net/detail/6132793.html注意:本人测试后,发现个问题,不知是我个人的VS问题还是普遍的。就是将配置文件中的新增的节点注释后,会导致页面调试的时候很难加载,一直转圈,出不来。痛苦使用Visual Studio开发Web网页的时候有这样的
    03-08
  • 开发 Web 服务 (SOAP) 并将其发布到 IIS
    开发 Web 服务 (SOAP) 并将其发布到 IIS
    1.首先我想将 SOAP 通信服务从用 Java/Axsis2 实现的遗留系统迁移到 C#我想将 SOAP 通信服务发布到 IIS 并使用 Soap UI 检查客户端的操作使用 .NET Framework 中包含的 ASP.NET asmx 提高开发效率.NETX 不包含 SOAP 通信工具二、开发环境 Visual Studio 2022.
    03-08
  • vs添加到附加进程调试(IIS页面调试) vs附加到进程调试不了
    vs添加到附加进程调试(IIS页面调试) vs附加到
    有时候单元测试不是很方便,通过页面调试接口会更直观,也跟容易发现问题(尤其是在页面传参的时候),这时vs添加到附加进程的调试方式就显得尤为重要了!步骤如下:1、首先是通过IIS建立网站,(前提是要先安装iis,网上教程很多且详尽)这里我已HYS.BT.V3项
    02-12
  • VS项目发布到本地IIS vs部署项目
    VS项目发布到本地IIS vs部署项目
      ①web项目,开发工具Visual Studio,语言C#  ②本地IIS,手机上或其他用户在和本地在同一个局域网(并不绝对是指同一个WIFI)内访问,同时要把防火墙关掉  ③IIS全名Internet Information Services,用来发布网站 二、步骤    1在开始菜单中搜索I
    02-10
  • Windows7下安装IIS出现“出现错误,并非所有的功能被成功更改
    Windows7下安装IIS出现“出现错误,并非所有的功
     1、开始,搜索输入UAC--选择 “更改用户账户控制设置” 2、调到最低 3、打开控制面板--》程序--》打开或关闭windows功能,去掉图里的2个选项,点确定,重启 4、重启后,再把这2个勾选上,注:indernet信息服务很多子项不勾选,需要手动展开到最底层进行
    02-10
  • asp.net mvc 发布到IIS测试,路径的引用问题
    asp.net mvc 发布到IIS测试,路径的引用问题
    之前做的一个ASP.NET MVCI应用程序,今天发布到IIS中进行测试,结果发现之前的很多引用的脚本文件和CSS文件都显示不正常,仔细一看原来是路径引用的问题。IIS里建的虚拟目录,但我在引用文件的时候都是使用的是站点根目录的方式,当时没有考虑到,我是菜鸟大
    02-10
  • IIS中实现http自动转换到https
    IIS中实现http自动转换到https修改以下文件:C:\WINDOWS\Help\iisHelp\common\403-4.htm 为以下内容!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"HTMLHEADTITLE该页必须通过安全通道查看/TITLEMETA HTTP-EQUIV
    02-10
  • IIS短文件名漏洞 IIS主要漏洞
    IIS短文件名漏洞 IIS主要漏洞
    Internet Information Services(IIS,互联网信息服务)是由微软公司提供的基于运行Microsoft Windows的互联网基本服务。Microsoft IIS在实现上存在文件枚举漏洞,攻击者可利用此漏洞枚举网络服务器根目录中的文件。危害:攻击者可以利用“~”字符猜解或遍历
    02-10
  • 错误">IIS 发布网站出现<compilation debug="tr
    参考:http://www.mamicode.com/info-detail-1180214.html原因是环境只安装到.net Framework 4.5 的版本(.net版本向下兼容 )解决方案:升级.net Framework修改为compilation debug="true" targetFramework="4.5"
    02-10
点击排行