我相信您已经开始使用WebApi。如果不是这样,那么当您开始时,这篇文章仍然可以为您提供帮助。
这篇文章重点介绍我在使用ASP.NET WebApi开发时遇到的一些问题以及解决这些问题的解决方案。
陷阱1 –> PUT和DELETE请求在Internet Explorer 10上不起作用
这一次引起了很大的痛苦,当我开始使用的WebAPI,发现PUT和DELETE要求不工作在Internet Explorer 10(特别是在Windows 8 64位)。我不确定为什么它不能在Internet Explorer的最新和最佳版本中起作用,但事实就是如此。没有针对此问题的解决方法。我们可以将此标签添加到<head>网页的标签中,以使Internet Explorer 10像Internet Explorer 9一样工作。
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" >
您可以将其添加到所有页面上,也可以仅添加到发出PUT或DELETE请求调用的页面上。但是,在使用ASP.NET WebApi进行开发之前,要牢记这一点,直到Microsoft提出针对此的修复程序为止。
陷阱2 –>一旦应用程序部署在IIS中,PUT和DELETE请求就不能工作
当你开始使用WebApi时,你会发现它非常棒,非常简单,只要你在VS中开发和调试你的解决方案,一切都很简单。但是,一旦在IIS中部署了WebApi应用程序,就会遇到问题,如果WebApi调用不起作用,则会遇到一些问题。不要感到惊讶,因为这是一个非常普遍的问题,因为默认情况下,IIS未配置为服务PUT/ DELETE请求。
为WebApi配置IIS 7.5
有时,当在IIS中部署WebApi应用程序时,IIS 7 / 7.5中安装的WebDav模块会导致问题。不知道是什么原因,但是对我有用的解决方案是为我的应用程序删除WebDav模块。这可以通过在web.config文件中添加以下标记来实现,该标记指示IIS不要为我们的应用程序注册WebDav模块。以下标签必须包含在应用程序的web.config中的<system.webServer>标签内。
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
为WebApi配置IIS 6
这个有点棘手,并且没有适当的解释为什么会起作用。但是我们需要为WebApi配置IIS6,以使我们的应用程序能够一致地工作。解决方法来自Phil Haack的帖子,内容涉及在IIS 6上使用ASP.NET MVC。帖子本身非常有用,但我们感兴趣的部分位于底部。因此,我将在这里为大家介绍一下:
- 右键单击已部署的应用程序,然后选择属性。
- 在属性窗口中,单击“配置”以打开“应用程序配置”窗口。
- 使用以下方法获取aspnet_isapi DLL 的路径。
一种简单的查找方法是在列表中找到.aspx扩展名,然后双击它以打开映射对话框。
现在,您可以将“可执行文件”文本框中的路径复制到剪贴板。
- 现在,进入先前的“应用程序配置”窗口。在“通配符应用程序映射”部分中,单击“插入...”按钮。
- 这将打开通配符应用程序映射对话框。输入在上一步中复制的aspnet_isapi.dll的路径。
不要忘记取消选中“确认文件存在”复选框!这是人们最常犯的错误之一,如果不去做会让你头痛。这可能会导致应用程序完全停止运行。
就是这样了。你应该做的很好。请记住,每个人可能都不会遇到这些问题,因为他们的IIS可能配置正确,或者他们已经在使用正确版本的正确浏览器。但是对这些陷阱的了解应该派上用场。