我最近将我们开发区域中的多个网站从 x86 Windows 2003 (IIS6) 迁移到 x64 Windows 2008 R2 (IIS7)。我使用“msdeploy”进行迁移。最初我迁移了整个服务器,但遇到了问题,所以我最终只迁移了 IIS 配置减去脚本映射。经过一些配置更改后,我终于能够在集成模式下获得 .NET 3.5 站点服务页面。但是,我对主页的这一部分有疑问:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
<Services>
<asp:ServiceReference Path="~/AjaxServices/FormSubmissionService.asmx" />
<asp:ServiceReference Path="~/AjaxServices/GMapDataService.asmx" />
<asp:ServiceReference Path="~/AjaxServices/ImageGalleryService.asmx" />
<asp:ServiceReference Path="~/AjaxServices/MyFavoritesService.asmx" />
</Services>
其中每一个都会生成一个脚本标记,例如:
<script src="../AjaxServices/FormSubmissionService.asmx/jsdebug" type="text/javascript"></script>
<script src="../AjaxServices/GMapDataService.asmx/jsdebug" type="text/javascript"></script>
<script src="../AjaxServices/ImageGalleryService.asmx/jsdebug" type="text/javascript"></script>
<script src="../AjaxServices/MyFavoritesService.asmx/jsdebug" type="text/javascript"></script>
正在访问 Web 服务,但在尝试访问“jsdebug”时出现以下错误:
System.InvalidOperationException: jsdebug Web Service method name is not valid.
at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
- 该站点的应用程序池是 v2.0.050727 集成的。
- “Enable 32-Bit Applicaitons = false”(翻转这个没有帮助)。
- 该站点是为“任何 CPU”构建的。
- 我在本地 Win7 机器上在 II7 下运行相同的站点,并且一切运行良好。我看到的唯一区别是应用程序池以“经典”模式运行。我尝试将服务器切换到“经典”模式,结果相同。
- 我尝试设置
debug="false"
,但我得到了同样的错误(除了 /js 而不是 /jsdebug) - 我跑
aspnet_regiis -i
了好几次。2.0 和 4.0 的 x64 版本 - 我已经通过角色管理器多次重新安装了 IIS 和 .NET 3.5.1
- 我能够访问每个 Web 服务定义页面
我想重新安装/修复 .net 2.0,但这在 WinServer 2008 中似乎是不可能的。我在别处读到重新安装操作系统是完成此任务的唯一方法。这不是一个选择。
我在某处缺少配置吗?任何帮助将不胜感激!