首先,让我先说我没有做端点/网络类型的东西的经验,所以我的问题可能看起来有点愚蠢,所以请多多包涵:)
我正在为 Windows Phone 7 编写的应用程序移植到 Windows 8(Metro 应用程序)上。在原始 App 中,有一个 ServicesReference.ClientConfig 文件,它定义了 App 连接到服务器的 URL、绑定和其他位(地址已更改):
<client>
<endpoint address="https://someurl.com/userservice.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_UserServices"
contract="UserApi.UserServices" name="User_Services" />
<endpoint address="https://someurel.com/dataservice.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_DataServices"
contract="DataApi.DataServices" name="Data_Services" />
此外,在 WP7 项目中,已经添加了两个“服务引用”(一个用于用户服务,一个用于数据服务),以及支持 Reference.cs 生成的文件。当我尝试将服务引用添加到 Win8 项目(VS2012)时,它生成了一个空白的 reference.cs 文件,所以我只是将 WP7 项目中的 Reference.cs 文件添加到 W8 项目中,并复制了 ServiceReferences.ClientConfig 文件进入 W8 项目(因此在目录结构方面,它看起来与 WP7 项目相同)。我认为这些 Reference.cs 文件是为合约提供接口的文件
现在,当我运行 W8 应用程序时,在需要访问服务的部分出现错误:
用户代码未处理 InvalidOperationException 在 ServiceModel 客户端配置部分中找不到名称为“User_Services”和合同“UserApi.UserServices”的端点元素。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素。
所以我认为应用程序没有使用 ServicesReferces.ClientConfig 文件来获取端点和网络地址,或者它没有找到我已导入项目的 Reference.cs 文件。那么,假设首先它没有通过 ServicesReferences.ClientConfig 文件正确找到端点,是否可以在代码中做同样的事情?
到目前为止,我得到的是:
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress endpoint = new EndpointAddress(new Uri("https://someurl.com/someservice.svc"));
但我不知道如何更进一步(我将它添加到 App.xaml.cs 中)
希望这个问题有意义。如果您需要任何进一步的信息,请告诉我,我会在去的时候尝试了解它,并在此端点业务上对自己进行更多教育
提前致谢