从Windows Phone 8模拟器访问本地Azure WCF服务

时间:2012-12-25 08:52:25

标签: wcf azure windows-phone-8-emulator

Windows Phone 8模拟器存在很大问题。

首先我有一个Azure项目,我有一个WebRole,这个webrole暴露了一些DomainServices(RIA服务)。

我将这个DomainServices暴露为SOAP,与其他应用程序(如Windows 8 metro风格或WPF应用程序客户端)一起使用此服务正常。

但是我尝试使用Windows Phone 8 Emulator来使用这些服务而且我不能这样做!。

我遵循了这篇文章:How to connect to a local web service from the Windows Phone 8 emulator

我需要更具体:

我在Windows Azure Project的webRole中有一个网站。

这个网站有一个DomainServices(RIA服务),因为我里面有一个Silverlight应用程序。 我用这个来公开这个服务。

 <domainServices>
  <endpoints>
    <add name="Soap" type="Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory,
         Microsoft.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, 
         Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </endpoints>
</domainServices>

我可以将此服务与其他应用一起使用。 Windows metro Style和WPF以及这些服务都可以正常工作。

现在,我想为Windows Phone 8开发一个新的应用程序。但我需要使用这些服务。

在我的本地计算机中,我尝试将此服务与模拟器连接,因此,我研究并发现模拟器是一个虚拟机,我需要配置IIS Express。 我遵循了这篇文章How to connect to a local web service from the Windows Phone 8 emulator

但我无法将webRole中托管的服务与Windows Phone 8 Emulator连接。

这是我的网站项目的结构: Project Structure

这个WebRole的配置称为LandingPage,这个Web角色有这些服务。 enter image description here

这是Applicationhost.config中的IIS Express配置。

 <site name="LandingPage" id="2">
            <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="E:\AnimesideFinal\AnimesideWebsite\LandingPage" />
            </application>
            <bindings>
                <binding protocol="http" bindingInformation="*:24939:localhost" />
        <binding protocol="http" bindingInformation="*:24939:192.168.2.114" />
            </bindings>
        </site>

这是在IIS Express中运行的应用程序与文章的不同之处。 enter image description here

最后,这是Windows Phone 8模拟器中服务的配置。

<configuration>
<system.serviceModel>
    <bindings>
        <basicHttpBinding>
            <binding name="BasicHttpBinding_AuthenticationServiceSoap" maxBufferSize="2147483647"
                maxReceivedMessageSize="2147483647">
                <security mode="None" />
            </binding>
        </basicHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://192.168.2.114/Services/LandingPage-Services-AuthenticationService.svc/Soap"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_AuthenticationServiceSoap"
            contract="AuthService.AuthenticationServiceSoap" name="BasicHttpBinding_AuthenticationServiceSoap" />
    </client>
</system.serviceModel>

我遵循了文章的所有步骤而没有结果。我认为有些问题是因为我需要从Azure项目运行我的项目,并且在其属性中存在使用IIS express或IIS Web服务器的选项。 enter image description here

这是Windows Phone模拟器的错误。

{System.ServiceModel.CommunicationException:远程服务器返回错误:NotFound。 ---&GT; System.Net.WebException:远程服务器返回错误:NotFound。 ---&GT; System.Net.WebException:远程服务器返回错误:NotFound。    在System.Net.Browser.ClientHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)    在System.Net.Browser.ClientHttpWebRequest。&lt;&gt; c__DisplayClasse.b__d(Object sendState)    在System.Net.Browser.AsyncHelper。&lt;&gt; c__DisplayClass1.b__0(Object sendState)    ---内部异常堆栈跟踪结束---    在System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod,Object state)    在System.Net.Browser.ClientHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)    at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)    ---内部异常堆栈跟踪结束---    在System.ServiceModel.AsyncResult.End [TAsyncResult](IAsyncResult结果)    在System.ServiceModel.Channels.ServiceChannel.EndCall(String action,Object [] outs,IAsyncResult result)    在System.ServiceModel.ClientBase 1.ChannelBase 1.EndInvoke(String methodName,Object [] args,IAsyncResult result)    在AnimesideWP7.AuthService.AuthenticationServiceSoapClient.AuthenticationServiceSoapClientChannel.EndLogin(IAsyncResult结果)    at AnimesideWP7.AuthService.AuthenticationServiceSoapClient.AnimesideWP7.AuthService.AuthenticationServiceSoap.EndLogin(IAsyncResult result)    在AnimesideWP7.AuthService.AuthenticationServiceSoapClient.OnEndLogin(IAsyncResult结果)    在System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)}

感谢您的帮助。

问候。

1 个答案:

答案 0 :(得分:0)