IIS发布 Web & WebService工程常见问题总结

一. IIS环境搭建问题

1. 注册v4.0版本.netframework

  • 方法 :
    • 1 cdm命令窗体进入该文件夹 命令:
      cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319
    • 2 注册
      aspnet_regiis.exe -i

2. IIS程序池回收问题

iis程序池默认回收时间为1740分钟(29小时),若要自定义为不回收,操作如下,这样IIS除非手动回收,否则不会自动回收

  • 1 在IIS中找到这个站点所用的程序池,点击“高级设置…”
  • 2 回收——固定时间间隔(分钟) 改为 0
  • 3 回收——虚拟/专用内存限制(KB) 改为 0
  • 4 进程模型——闲置超时(分钟) 改为 0

3. 发布完工程执行出现如下异常

未能加载文件或程序集XXX或它的某一个依赖项。试图加载格式不正确的程序在这里插入图片描述
问题查找请查看:

  • 1 程序池是否为4.0
  • 2 修改程序池的 “高级设置”–>启动32位应用程序为True
    在这里插入图片描述
4. 应用程序池启动失败

问题描述: IIS应用程序池在关闭后重新进行启动,启动报错:“服务无法在此时接受控制信息。 (异常来自 HRESULT:0x80070425)”

解决方案:
用管理员方式打开命令行,输入命令 netsh winsock reset

这个命令在百科上的解释是:

netsh winsock reset命令,作用是重置 Winsock 目录。如果一台机器上的Winsock协议配置有问题的话将会导致网络连接等问题,就需要用netsh winsock reset命令来重置Winsock目录借以恢复网络。

注意:命令执行后,会提示重启计算机后生效,实际上不重启也可以恢复的。

5. 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射
  • WCF服务启动报错
    在这里插入图片描述
  • 解决方案
    管理员身份运行C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation
    执行命令 ServiceModelReg.exe -i

二. WebService服务发布问题

1. HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容。

在这里插入图片描述
解决方案:IIS的默认文档里添加默认首页即可
在这里插入图片描述
在这里插入图片描述

2. 浏览器显示:测试窗体只能用来来自本地计算机的请求

在本地测试可以正常输入参数,但发布后,在本地访问呢测试地址,发现没有输入参数的地方了。

原因:
本地服务器没有开启远程访问

解决方案:
在web.config的<system.web>中间加入如下配置节内容

<webServices>
   <protocols>
      <add name="HttpSoap"/>
      <add name="HttpPost"/>
      <add name="HttpGet"/>
      <add name="Documentation"/>
   </protocols>
</webServices>

3. 服务端超时时间设置

web端调用超时配置见下方(三–7)

 <system.web>
    <httpRuntime executionTimeout="300000" /> <!--超时设置300s-->
    <customErrors mode="Off" /> <!--错误信息显示-->
 </system.web>

4. 服务调试localhost换成IP后访问不到地址

  1. 启动服务,右击任务栏IIS Express,点击“显示所有应用程序”

右击

  1. 选中要设置的服务,点击红框的配置
    在这里插入图片描述

  2. 找到该服务的site节点,新增一条binding,绑定本机IP即可
    在这里插入图片描述

三. Web网站发布问题

1. 本地IIS发布一切正常,发布服务器IIS后Cookie无法写入导致无法用户认证问题

解决方案:

  • 1 保证IIS发布地址都为域名访问,而非IP地址
  • 2 本地发布地址和服务器发布域名地址的结尾,必须和程序中Cookie Domain(假设设置为.abcd.com)的设置一样,则发布时域名后缀都必须以 .abcd.com结尾,前面是什么无所谓
  • 3 确认服务器时间,有时候会和本地时区不一致,也会导致Cookie失效

2. 发布后前端样式资源403无权加载

解决方案:

  • 1 为网站访问的文件夹开设权限
    增加 IIS_IUSRS 或 everyone 的读写全开权限
  • 2 若1还未解决,则修改web.config,此法不是很提倡,但能解决问题
    compilation 配置节加 debug=“true”

3. 工程框架版本切换,导致项目运行崩溃问题

该例为.netframework4.6.1切换至.netframework4.5.2
崩溃原因: Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider 包对framework的兼容性导致

解决方案:

  • 1 web.config修改system.codedom配置节

      <system.codedom>
      	<compilers>
      	  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
          <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
        </compilers>
      </system.codedom>
    
  • 2 工程的.csproj文件添加

    
     <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
    
    

注意: 工程版本切换完后,有时需要重装IIS所在电脑的.NetFramework环境,特别是当电脑的framework版本低于工程版本时,就必须重装

4. HTTP 错误 403.14 - Forbidden

在这里插入图片描述
解决方案:web.config添加配置

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>

5. 解决网页出现 net::ERR_ABORTED 404 (Not Found)问题

1、在Web.config中的system.webServer节点添加woff字体的MIME类型

	<staticContent>
		<remove fileExtension=".woff" />
		<mimeMap fileExtension=".woff" mimeType="font/x-font-woff" />
	</staticContent>

2、 或在IIS中添加woff字体的MIME类型
在这里插入图片描述
在这里插入图片描述

6. 解决Web端调用接口数据量过大无法传输问题

服务端工程的配置文件增加配置

  <system.web.extensions>
    <scripting>
      <webServices>
        <jsonSerialization maxJsonLength="102400000" />
      </webServices>
    </scripting>
  </system.web.extensions>
  
  <system.web>
    <httpRuntime executionTimeout="600" maxRequestLength="102400000" />
  </system.web>
  
  <system.webServer>
    <security>
        <requestFiltering>
           <requestLimits maxAllowedContentLength="102400000" />
        </requestFiltering>
    </security>
  </system.webServer>

7. 调用webservice超时&请求字节数配置

 <basicHttpBinding>
   <binding name="MyWebServiceSoap" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" sendTimeout="00:10:00" receiveTimeout="00:10:00">
     <readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />
   </binding>
 </basicHttpBinding>
END
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章