为什么部署后我的实体会消失?

时间:2011-05-03 14:36:06

标签: entity-framework windows-server-2003 wcf-data-services

我为我们的几个实体创建了一个OData服务,在我的开发人员机器(WinXP)上,一切都像它应该的那样,这是我在访问服务时得到的:

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<service xml:base="http://localhost:2332/ContactOData.svc/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app">
  <workspace>
    <atom:title>Default</atom:title>
    <collection href="Client">
      <atom:title>Client</atom:title>
    </collection>
    <collection href="Vehicle">
      <atom:title>Vehicle</atom:title>
    </collection>
    <collection href="Contact">
      <atom:title>Contact</atom:title>
    </collection>
  </workspace>
</service>

现在我将该服务部署到测试服务器(Win2K3)后,我的所有实体都消失了:

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<service xml:base="http://dev-cont2011b/ContactOData/ContactOData.svc/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app">
  <workspace>
    <atom:title>Default</atom:title>
  </workspace>
</service>

事件日志中没有任何错误消息。我的连接字符串是正常的(我使用一个简单的test.aspx页面对其进行了测试,该页面从数据库中取出并在页面上显示它==&gt;这是有效的)。

当我手动输入其中一个实体(客户端)的网址时,这就是我得到的:

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?> 
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> 
  <code></code>
  <message xml:lang="nl-BE">Resource not found for the segment 'Client'.</message> 
</error>

.NET Framework 3.5安装在该服务器上。我运行了所有更新。

在过去的几个小时里,我一直在敲打这个。我不知道我还能做什么或测试。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

解决方案是安装此更新:

  

<强> ADO.NET Data Services Update for .NET Framework 3.5 SP1 for Windows Server 2003, Windows XP, Windows Vista and Windows Server 2008

显然,默认情况下,这个不包含在Windows更新中。你必须手动运行它。

这是必需的,因为我更改了默认的InitializeService方法,因此需要DataServiceConfiguration代替IDataServiceConfiguration

public static void InitializeService(DataServiceConfiguration config)
{
    config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
    config.DataServiceBehavior.MaxProtocolVersion = System.Data.Services.Common.DataServiceProtocolVersion.V2;
    config.SetEntitySetPageSize("*", 20);
}

如果要启用服务器端分页(SetEntitySetPageSize)(以及其他),则需要这样做。

答案 1 :(得分:0)

新尝试:

这是一个RESX问题

<message xml:lang="nl-BE">Resource not found for the segment 'Client'.</message> 

它正在尝试查找名称为Client的nl-BE转换。