为什么我无法从Windows Phone 8仿真器连接到本地Web服务?

时间:2014-05-08 22:11:54

标签: c# web-services wcf windows-phone-8 emulation

在发布之前我确实已经完全耗尽了所有可用资源。 我正在开发需要访问SQL服务器的Windows Phone 8应用程序,我无法连接到本地Web服务。我从来没有这样做过,而且我对这个概念不熟悉。 我已经尝试了不同的解决方案,底线是 - 我一直得到-System.ServiceModel.CommunicationException - {System.Net.WebException} - 远程服务器返回错误:NotFound。 - 错误。

正如我在http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj684580(v=vs.105).aspx尝试官方msdn的回答之前所说的那样,它对我没有用。 我可以在网上找到类似的文章。当然不需要提到我完全打破防火墙(防火墙中的例外不起作用),禁用防病毒,检查路由器上的dhcp设置,更改互联网选项中的代理设置,以及所有类型的小时奇怪的尝试让它运行。什么都没有。

模拟器似乎连接到互联网没有问题,有三个虚拟交换机(我见过的大多数文章只提到两个,但这并不意味着什么),两个有169.254.xx地址,而第三个有192.168.xx地址。

当我运行ipconfig时,我没有看到(以太网适配器vEthernet(Marvell Yukon 88E8057 PCI-E千兆以太网控制器虚拟交换机)的默认网关。似乎没有人提到必须有一个,所以我不知道如果这很重要,地址是(默认,我相信)169.254.80.80。

我能够在运行时(右键单击+浏览器中的视图)Service1.svc文件时看到该服务,但任何运行手机项目的尝试都失败。

我试图在VS2012和VS2013中解决它。同样的事情。

我没有想法,我的下一个最好的猜测是在同一台计算机的另一个部分安装Windows 8.1,看看会发生什么。在这一个我正在运行Windows 8专业版。

我希望我足够具体,不知道这对其他人有多大帮助因为我没有看到任何人在重新配置applicationhost.config文件和解决方案后提到问题,因为它指向了msdn网站

有没有人知道可能是什么原因?

抱歉,我没有发布任何代码。在WFC项目中,我创建了非常简单的PersonScore.cs

[DataContract]
public class PersonScore
{
    [DataMember]
    public string PersonId { get; set; }

    [DataMember]
    public string Name { get; set; }

    [DataMember]
    public double Score { get; set; }

    [DataMember]
    public string Message { get; set; }

} 

在IscoreTransaction.cs中添加了一个方法

[ServiceContract]
public interface IScoreTransaction
{
    [OperationContract]
    PersonScore GetPersonInfo(string personId);
}

并且,ScoreTransaction.svc(只是将某些内容发送回PhoneApp)

public class ScoreTransaction : IScoreTransaction
{
    private double score = 10.00;

public PersonScore GetPersonInfo(string personId)
    {
        //without checking the id, simply return something
        return new PersonScore { PersonId = "1", Name = "John Doe", Score = score, Message   = "Hello world" };
    }   
}

在WF项目中向WFC添加了一个服务引用(ScoringServiceReference),并试图从MainPage.xaml.cs中获取结果,如:

public partial class MainPage : PhoneApplicationPage
{
    private readonly ScoringServiceReference.ScoreTransactionClient proxy;

    public MainPage()
    {
        InitializeComponent();
        proxy = new ScoringServiceReference.ScoreTransactionClient();
        proxy.GetPersonInfoCompleted += proxy_GetPersonInfoCompleted;
    }

    private void proxy_GetPersonInfoCompleted(object sender, ScoringServiceReference.GetPersonInfoCompletedEventArgs e)
    {
        var result = e.Result;
    }

    private void GetInfoBtn_Click(object sender, RoutedEventArgs e)
    {
        proxy.GetPersonInfoAsync(txtId.Text);
    }      
}

卡住了。我尝试连接(在我重新配置applicationhost.config文件之后)使用设备的IP之一 - 192.168.0.100,我从设备中获得了其他工具 - >网络,但可以使用它运行IIS Express。

0 个答案:

没有答案