锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / ASP.NET开源技术 / webapi解决HTTP404错误过程
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品开源心得,禁止任何转载和非法使用,侵权必究

webapi解决HTTP404错误过程


背景

近期在阿里云独享经济虚拟主机上部署webapi项目,遇到了HTTP 404错误,解决过程一波三折,分享给大家。

误导因素一:虚拟主机只支持.NET4

因为我代码是用VS2013写的,用的是.NET4.5,.NET环境差异是我首先想到的原因。把代码用VS2010重新写下,发布到虚拟主机上还是不行。其实这问题并不严重,只是首先遇到这个问题,容易让人把精力放到环境上,而没有放到自己代码下。

误导因素二:有网友提示向阿里云发工单

上个步骤没解决问题,我就在QQ群里问,有个网友说发工单。我就边搜索网络上关于HTTP404的情况,边发工单。发工单也确实有效,因为别人的环境,别人肯定懂。不过这里会潜意识地产生误解,因为问题提交给别人了,好像自己方向就没问题了。其实不是。工单最后的提示,还是环境没问题,让查程序代码问题。

观察webapi执行情况

没办法,还是回到起点,重新访问webapi的url,执行时遇到错误,在web.config里加上customErrors mode="Off",看到错误是关于数据库连接,就把web.config里的连接字符串修改对,问题解决。

总结

开始的HTTP404错误肯定是和web.config里的配置有关系,在web.config修改后还有问题,哪就是因为数据库访问有异常,导致整个asp.net环境加载webapi的dll退出了,在dll都没有运行时,肯定不能响应url了。下面把web.config里最重要的一段发给大家供参考:

  <system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="WebDAV" />
<remove name="WebAPI_64bit" />
<remove name="WebAPI_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" resourceType="Unspecified" requireAccess="Script" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" resourceType="Unspecified" requireAccess="Script" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" resourceType="Unspecified" requireAccess="Script" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="WebAPI_64bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv4.0,bitness64" />
<add name="WebAPI_32bit" path="*" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" preCondition="classicMode,runtimeVersionv4.0,bitness32" /> </handlers>
</system.webServer>
友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内