在使用ASP.NET MVC4Web API进行开发的过程中,可能会遇到一些常见的问题。本文将分享一些在开发过程中遇到的典型问题及其解决方案,希望能够帮助到正在使用或即将使用Web API的开发者们。
在开始使用Web API时,可能会发现在Windows 8 64位系统上的Internet Explorer 10中,PUT和DELETE请求无法正常工作。虽然不确定为何在最新版本的IE中会出现这样的问题,但可以采取一些措施来解决。一种方法是在Web页面的
标签中添加以下meta标签,使IE10模拟IE9的行为:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9">
可以将这个标签添加到所有页面,或者仅添加到执行PUT或DELETE请求的页面。这是一个在开发ASP.NET WebApi时需要注意的问题,直到微软提供修复方案。
当开始使用WebApi时,可能会发现在Visual Studio中开发和调试时一切正常,但一旦将WebApi应用部署到IIS,就会出现一些问题,某些WebApi调用可能无法正常工作。这并不奇怪,因为IIS默认并不配置为处理PUT/DELETE请求。
有时,安装在IIS 7/7.5中的WebDav模块可能会导致WebApi应用在部署到IIS时出现问题。解决方案是移除WebDav模块。这可以通过在应用的web.config文件中添加以下标签来实现,指示IIS不为应用程序注册WebDav模块。这些标签需要包含在应用的web.config文件的
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
<handlers>
<remove name="WebDAV" />
</handlers>
这样配置后,应该可以解决在IIS 7.5中部署WebApi应用时遇到的问题。
配置IIS 6以支持WebApi稍微有些复杂,并且没有明确的解释说明为什么这样做有效。但需要对IIS 6进行配置,以确保WebApi应用能够一致地工作。以下是一个常见的解决方法,来源于Phil Haack关于在IIS 6上使用ASP.NET MVC的帖子:
1. 右键点击已部署的应用,选择属性。
2. 在属性窗口中,点击配置以打开“应用程序配置”窗口。
3. 获取aspnet_isapi.dll的路径。一种简单的方法是在列表中找到.aspx扩展名,双击它以打开映射对话框。
4. 现在,可以将Executable文本框中的路径复制到剪贴板。
5. 返回到之前的“应用程序配置”窗口。在通配符应用程序映射部分,点击Insert…按钮。
6. 这将打开通配符应用程序映射对话框。输入之前复制的aspnet_isapi.dll的路径。
7. 别忘了取消勾选“验证文件是否存在”复选框!这是一个常见的错误,如果没有正确操作,可能会导致应用程序完全停止工作。