在我的应用程序(Windows Phone)中,我通过代码生成动态连接到WCF Web服务。 用户必须指定Web服务的URL然后我创建我的EndPointAddress和Binding,它运行良好。 但是如果用户输入了无效的URL,则抛出异常:

“System.ServiceModel.EndpointNotFoundException - >没有端点侦听[服务的地址]可以接受消息。这通常是由不正确的地址或SOAP操作引起的。有关详细信息,请参阅InnerException(如果存在)。”

innerexception非常经典:“远程服务器在InnerException返回错误:NotFound。”

问题:我无法处理此异常。 我尝试了许多在这里找不到的东西。

有什么解决方案吗?

我唯一能找到的是参考References中的一些方法,这绝对不是一个好主意......!

提前谢谢你,抱歉我的英文不好:)!

我的实际代码看起来像这样,但它没有捕获异常=>

        MyServiceClient client = new MyServiceClient(myBinding, myEndpointAddress);
        try
        {
            client.RegisterUserCompleted += new EventHandler<RegisterUserCompletedEventArgs>(client_RegisterUserCompleted);
            client.RegisterUserAsync();
        }
        catch (TimeoutException ex)
        {
            MessageBox.Show(ex.Message);
            client.Abort();
        }

        catch (FaultException ex)
        {
            MessageBox.Show(ex.Message);
            client.Abort();
        }

        catch (CommunicationException ex)
        {
            MessageBox.Show(ex.Message);
            client.Abort();
        }

        catch
        {
            MessageBox.Show("Error");
            client.Abort();
        }
        finally
        {
            client.CloseAsync();
        }

===============>>#1 票数:2

问题已经解决了。 解决方案是:uri必须在创建客户端之前进行测试。 为此,我创建一个WebRequest并捕获WebResponse中的异常:

public void ValidateUri(String uri)
    {
        if (!Uri.IsWellFormedUriString(uri, UriKind.RelativeOrAbsolute)) return;
        request = WebRequest.Create(uri);
        request.BeginGetResponse(new AsyncCallback(ValidateUriCallback), null);
    }

    private WebRequest request;
    private void ValidateUriCallback(IAsyncResult result)
    {
        try
        {
            WebResponse httpResponse = (WebResponse)request.EndGetResponse(result);

            // Create the client here
            ServiceClient client = new MyServiceClient(myBinding, myEndpointAddress);
        client.RegisterUserCompleted += new EventHandler<RegisterUserCompletedEventArgs>(client_RegisterUserCompleted);
        client.RegisterUserAsync();

        }
        catch (WebException ex)
        {
            var response = ex.Response as System.Net.HttpWebResponse;
    if (response!=null 
        && response.StatusCode == HttpStatusCode.NotFound)
    {
        Dispatcher.BeginInvoke(delegate()
                {
                    MessageBox.Show("The web service address is not valid", "Sorry", MessageBoxButton.OK);
                 });
    }
        }

===============>>#2 票数:0

您需要将try catch移动到client_RegisterUserCompleted方法并环绕 var x = e.Result;

编辑:由于我的第一种方法是错误的...首先,您应该首先检查您的URL(代码中的myEndpointAddress)。 您可以在浏览器中浏览它(您可以在该行上设置断点,然后复制该值并将其粘贴到您的浏览器中)。

如果可行或者当您浏览它时显示错误,则将其添加到托管WCF服务的Web应用程序的web.config中。

<system.diagnostics> <sources> <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true"> <listeners> <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData= "Trace.svclog" /> </listeners> </source> </sources> </system.diagnostics>

然后运行您的应用程序或浏览它。 它将在与Web应用程序相同的目录中创建Trace.svclog文件。 打开该文件并在红色条目中查找突出显示的内容。 这将为您提供有关异常的更多信息。 默认情况下,WCF不会返回完整信息以减慢恶意用户的速度。

  ask by Alexis Mathieu translate from so

未解决问题?本站智能推荐:

1回复

Silverlight WCF服务要求在服务器上使用奇怪的URL

我对Silverlight 4和WCF有问题。 我正在调试应该连接到https://MYSERVERNAME/mijn/DataSource/Editie.svc/ Silverlight应用程序,而不是始终请求https://WRONGSERVERNAME/mijn/DataSource
1回复

Silverlight客户端使用WCF服务-生产环境中的配置问题

我们已经构建了使用WCF服务的Silverlight客户端。 由于WCF服务+ Silverlight Host App这两个项目都在Localhost上运行且工作正常,因此它在我们的本地开发设备上绝对完美。 但是,在生产环境中,silverlight客户端托管在其他网站中,而WCF服务
1回复

WCF中端点的基址

我正在使用WCF并希望创建3个端点:basicHttpBinding,netTcpBinding和wsHttpBinding。 我已指定2个端点如下: 和指定的基地址如下: 但我不知道如何编写wsHttpBinding的基地址,无法在任何地方找到它。 请帮忙。 谢谢。
1回复

WCF端点URL

如果这在Stackoverflow的错误部分中,请原谅。 但是我有一个Web应用程序,它引用同一Web服务器上的wcf Web服务,它只是在另一个虚拟目录中 用于访问Web服务以提高性能的最佳终结点URL是什么(http://)
1回复

WCF:CustomBinding会混淆端点

我使用CustomBinding来启用Soap 1.1(端点不支持1.2)+ Addressing 1.0。 端点仅可通过SSL使用,并可在某种Java / Weblogic平台上运行。 这是我的配置: [...] 这种配置似乎混淆了端点。 当我对SomePort执行请
1回复

找不到WCF服务的端点

我创建了WCF服务。 当我使用WCF测试客户端对其进行测试时,该服务可以正常运行。 我决定配置端点以使用浏览器显示结果。 我有一个空白页面, 找不到文本Endpoint。 没有更多细节。 这是我的web.config 这是我的ICollectorService
1回复

WCF服务的多个HTTPS端点

我有一个WCF服务,可用于两个端点:HTTP和https。 我需要添加另一个https端点,以便一个将需要客户端证书,而另一个则不需要。 如果我添加具有自己的基本地址的新https端点,则会收到错误消息: System.ArgumentException:此集合已包含一个带有方
1回复

如何拒绝WCF实体在某些端点中显示[重复]

这个问题已经在这里有了答案: 在WCF DataContract上排除属性 2个答案 我有一个带有3个端点的wcf服务,并且我在用DataContract和DataMember装饰的服务实体内。 我的问题是,是否可以拒绝datacontractserializ
1回复

未找到端点 - WCF Web服务

我为我的WCF服务创建了2个端点。 它与basicHttpBinding一起工作正常,但会导致webHttpBinding错误。 错误=未找到端点。 运营合同定义 web.config : 请建议我如何解决这个问题?
1回复

WebAPI找不到WCF端点元素

我正在尝试通过.Net 4.5 C#MVC4 WebAPI(RCWindsExtSvc)消耗可用的C#WCF服务(RCWindsSvc)。 从WebAPI调用WCF服务时,我收到以下运行时错误: 在ServiceModel客户端配置部分中,“找不到名称为'RCWindsSvcEndpoi