我在连接 WCF 服务和 Windows Phone 时遇到问题。我有一个没有源代码的服务(仅在网络上发布),我需要在 Windows Phone 7 应用程序中使用它。
我在项目中添加了一个服务引用,VS 生成了我的文件 ServiceReferences.ClientConfig:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="HttpBinding_IWcfMobilServices">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://www.www.com/WcfMobilServices.svc"
binding="basicHttpBinding" bindingConfiguration="HttpBinding_IWcfMobilServices"
contract="MobileService.IWcfMobilServices" name="HttpBinding_IWcfMobilServices"></endpoint>
</client>
</system.serviceModel>
</configuration>
当我调用服务方法时:
public static void Login()
{
var proxy = new MobileService.WcfMobilServicesClient();
proxy.LoginAsync("loginName", "paswword");
proxy.LoginCompleted += (s, a) =>
{
//some code
};
}
LoginCompleted 中的应用程序在 a.Result 上抛出异常:
System.ServiceModel.ProtocolException:内容类型文本/xml;服务http://www.www.com/WcfMobilServices.svc不支持 charset=utf-8 。客户端和服务绑定可能不匹配。---> System.Net.WebException:远程服务器返回错误:NotFound。---> System.Net.WebException:远程服务器返回错误:NotFound。在 System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) 在 System.Net.Browser.ClientHttpWebRequest.<>c_ DisplayClasse.b _d(Object sendState) 在 System.Net.Browser.AsyncHelper.<>c_ DisplayClass1.b_0(Object sendState) --- 内部异常堆栈跟踪的结束 --- 在 System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 在 System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state) 在 System .ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result) --- 内部异常堆栈跟踪结束 --- 在 System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary() 在 W7App.MobileService.LoginCompletedEventArgs.get_Result()} 系统.ServiceModel.CommunicationException {System.ServiceModel.ProtocolException}
知道有什么问题吗?
我试图将配置文件中的 Binding 更改为 wsHttpBinding,但 VS 向我显示了一个警告:
元素“绑定”具有无效的子元素“wsHttpBinding”。预期的可能元素列表:“basicHttpBinding,CustomBinding”。
谢谢