【发布时间】:2010-10-26 18:09:22
【问题描述】:
我有一个使用 RIA 服务的 Silverlight 4 应用程序,在该应用程序中,我将所有 RIA 服务特定的代码移到了一个名为“AppServices”的单独模块(WCF RIA 服务类库)中。我们将主应用程序称为“Silverlight4App”。我需要针对与存储其余数据的数据库不同的数据库对用户进行身份验证。我已将 EF 模型添加到 AppServices.Web,这也是身份验证服务当前所在的位置。 Web.config 文件位于主应用程序中,即 Silverlight4App 中。
在 web.config 文件的 connectionStrings 部分,我最初有这个:
<add name="AuthEntities" connectionString="metadata=res://*/AuthModel.csdl|res://*/AuthModel.ssdl|res://*/AuthModel.msl;provider=... />
我收到以下错误:
“查询'GetUser'的加载操作失败。无法加载指定的元数据资源。”
然后我尝试了各种方法,例如:
<add name="AuthEntities" connectionString="metadata=..\..\bin\AuthModel.csdl|..\..\bin\AuthModel.ssdl|..\..\bin\AuthModel.msl;provider=... />
得到了这个错误:
“查询“GetUser”的加载操作失败。指定的元数据路径无效。有效路径必须是现有目录、扩展名为“.csdl”、“.ssdl”或“.msl”的现有文件',或标识嵌入资源的 URI。”
我还尝试将元数据文件复制到不同的位置。最后,我进一步了解了以下内容。
<add name="AuthEntities" connectionString="metadata=~\..\..\..\Silverlight4App.Web\Metadata\AuthModel.csdl|~\..\..\..\Silverlight4App.Web\Metadata\AuthModel.ssdl|~\..\..\..\Silverlight4App.Web\Metadata\AuthModel.msl;provider=... />
使用上面的连接字符串,我得到以下错误:
“查询“GetUser”的加载操作失败。提供的连接字符串无效,因为它包含的映射或元数据信息不足。\r\n参数名称:connectionString 内部异常消息:无法确定应用程序上下文。ASP。 NET 应用程序路径无法解析。”
好吧,至少它似乎找到了元数据文件!出于沮丧,我终于尝试简单地硬编码元数据文件的整个路径:
<add name="AuthEntities" connectionString="metadata=C:\Users\...\Silverlight4App.Web\Metadata\AuthModel.csdl|C:\Users\...\Silverlight4App.Web\Metadata\AuthModel.ssdl|C:\Users\...\Silverlight4App.Web\Metadata\AuthModel.msl;provider=... />
效果很好!!不幸的是,这是一个糟糕的解决方案,尤其是当我去部署应用程序时。
我在硬编码尝试(见上文)之前尝试的尝试抱怨信息不足,但硬编码尝试指向完全相同的文件,这似乎很奇怪>,似乎包含足够的信息。嗯……
有什么想法吗?我当然可以使用一些帮助!
【问题讨论】:
标签: silverlight entity-framework silverlight-4.0 forms-authentication wcf-ria-services