asp.net - 更新 API 后 IIS 上出现错误 404
问题描述
所以我有一个具有这种结构的 API:
[RoutePrefix("api/AppMananciais")]
public class AppMananciaisController : ApiController
{
// GET api/<controller>
[AcceptVerbs("Get")]
[Route("DadoDia/{_data}")]
public object DadoDia(DateTime _data)
{
/*some code*/
}
我以前是这样叫的? http://myurl.com/api/AppMananciais/DadoDia/2018-01-01
然后,我们为其开发了一个更新,并为 API 版本添加了一个可选参数
// GET api/<controller>
[AcceptVerbs("Get")]
[Route("DadoDia/{_data}/{api_version?}")]
public object DadoDia(DateTime _data, int api_version = 1)
{
/*some code*/
}
所以这两个调用都应该起作用:
http://myurl.com/api/AppMananciais/DadoDia/2018-01-01 http://myurl.com/api/AppMananciais/DadoDia/2018-01-01/2
我们在 Visual Studio 上进行本地测试,然后在开发服务器、测试服务器和验收测试服务器上发布,在所有这些服务器上都按预期工作。
当我们最终发布到生产服务器时,它并没有按预期工作。调用 API 的旧方法运行良好
http://myurl.com/api/AppMananciais/DadoDia/2018-01-01
从结果中我们可以看出它确实在运行更新版本。
但是调用 API 的新方法返回错误 404 http://myurl.com/api/AppMananciais/DadoDia/2018-01-01/2
所有服务器都运行相同版本的 IIS (8.5.9600.16384)
它们的 Web.config 是相同的,除了指示从何处获取数据的键/值对。测试表明数据源工作正常,并通过 api 版本参数理解新语法。
<configuration>
<system.web>
<compilation targetFramework="4.6" />
<httpRuntime targetFramework="4.6" />
</system.web>
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
<appSettings>
<add key="apiIntranet" value="http://datasource:1059/" />
</appSettings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
</configuration>
经过一番研究,我尝试在 Web.config 中包含以下行,但没有解决问题:
<modules runAllManagedModulesForAllRequests="true" />
关于我应该寻找什么以使 API 按预期工作并在测试的所有其他服务器中验证的任何提示?
解决方案
推荐阅读
- google-home - 实施谷歌智能家居请求同步
- paypal - Paypal API v2 请求不记名令牌
- apache-spark - Spark UDF 使用 Cassandra 连接器查找密钥
- html - 如何在横幅图像中垂直居中页面标题文本(无弹性框/网格)?
- laravel - 如何将列类型从整数更改为大整数,而其他表在 laravel 中具有外部 id 关系?
- android - 具有多种风格的android签名应用程序的问题
- dialogflow-es - 当我在制作后不断删除代理时,我们可以在对话流中制作多少个代理
- python - 带有模块的用户 ironpython
- javascript - Google Maps Javascript API 在 JS Fiddle 中工作但未显示在 localhost
- google-apps-script - 有没有办法将 Google 幻灯片中的脚本链接到对象?