5

今天,当我尝试将 Lightswitch 应用程序部署到运行 IIS 7.5 的 Windows 2008 R2 服务器时,我已经把我的挫败感发挥到了极致。导航到应用程序后,我收到以下错误

查询“GetAuthenticationInfo”的加载操作失败。远程服务器返回错误:NotFound。

.NET 跟踪和服务器事件日志都有这样的说法:

发件人信息:System.ServiceModel.Activation.HostedHttpRequestAsyncResult/63835064 异常:System.Web.HttpException (0x80004005):服务“/Web/Microsoft-LightSwitch-Security-ServerGenerated-Implementation-AuthenticationService.svc”不存在

配置详情如下:

  • 我在访问控制选项下选择了“不启用身份验证”。
  • 在我的“应用程序服务器配置”发布选项中,我选择了未选中先决条件复选框的 IIS 服务器。
  • 在“发布输出”下,我正在本地磁盘上创建一个包。后来,我将该包复制到服务器并手动运行 .deploy.cmd ,这似乎工作正常。
  • 我在“其他连接”下的数据库连接是正确的——它是一个可以在我的机器上运行的 SQL 登录,并且该服务器上的其他站点可以毫无问题地连接到同一个数据库服务器。

在服务器端:

  • 该站点使用 ApplicationPoolIdentity 在其自己的 .NET 4.0 集成模式下的应用程序池中运行。
  • 仅启用匿名身份验证。

我试过的:

  • 从 Web 平台安装程序安装了 2011 年和 2012 年的所有 Lightswitch 东西。
  • 安装 RiaServices.msi。
  • 修复了 .NET 4.5。
  • 跑aspnet_regiis -i

这些都没有任何效果。我对上面粗体错误的唯一提示是 .svc 是在运行时生成的,如果 WCF 端出现其他问题,它将引发 404 错误。(这就是我尝试安装 RiaServices.msi 的原因。)

我能够“现在远程发布到服务器”到我自己的本地 IIS Express,并且那里的应用程序运行良好。但是,将这些文件复制到远程服务器会产生与以前相同的结果。

有关如何进一步解决此问题的任何建议?

4

3 回答 3

4

如果您在安装 Visual Studio 2013 或在开发盒上安装了具有比 5.0.0.0 更新的 OData 的 .NET 版本后遇到此问题,则问题是因为安装了新版本的 OData 程序集和 LightSwitch 服务器项目现在正在使用这些(不兼容)。您可以通过更新 Server.csproj(或 vbproj)以引用以前版本的 OData 程序集来解决此问题。

将 HintPath 节点添加到 Server\Server.CSProj 中的以下 5 个程序集条目

<Reference Include="Microsoft.Data.Edm">
  <HintPath>C:\Program Files (x86)\Microsoft WCF Data Services\5.0\bin\.NETFramework\Microsoft.Data.Edm.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Microsoft.Data.OData">
  <HintPath>C:\Program Files (x86)\Microsoft WCF Data Services\5.0\bin\.NETFramework\Microsoft.Data.OData.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Microsoft.Data.Services">
  <HintPath>C:\Program Files (x86)\Microsoft WCF Data Services\5.0\bin\.NETFramework\Microsoft.Data.Services.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="Microsoft.Data.Services.Client">
  <HintPath>C:\Program Files (x86)\Microsoft WCF Data Services\5.0\bin\.NETFramework\Microsoft.Data.Services.Client.dll</HintPath>
  <Private>True</Private>
</Reference>
<Reference Include="System.Spatial">
  <HintPath>C:\Program Files (x86)\Microsoft WCF Data Services\5.0\bin\.NETFramework\System.Spatial.dll</HintPath>
  <Private>True</Private>
</Reference> 

升级到 V3 项目系统(使用 VS 2012 Update 2)或 V4 项目(VS 2013)的项目不会出现此问题,因为我们解决了这些程序集的引用方式。所以另一种解决方案是右键单击项目并选择“升级项目”

大卫基德 | 高级 SDET | 微软 | 灯开关

LightSwitch 论坛发布此问题的答案

于 2013-11-13T20:33:00.130 回答
4

问题是 Lightswitch 应用程序使用 Microsoft.Data.Services 5.0.2.0 进行部署,但 Microsoft.LightSwitch.Server 11.0.0.0 必须引用 Microsoft.Data.Services 5.0.0.0。一旦我将 5.0.0.0 部署到 Web 服务器,应用程序就会按预期运行。

我通过尝试直接导航到 /Microsoft.LightSwitch.SecurityData.svc(这是一个与应用程序一起部署的静态服务)然后按照 YSOD 说明发现了这个问题。

于 2012-11-13T22:30:15.260 回答
2

我有同样的问题。转到 IIS 上的应用程序,然后双击身份验证。选择 Windows 身份验证并禁用它。

于 2012-11-10T06:00:08.517 回答