Web服务 - 没有端点侦听

时间:2011-04-27 16:24:26

标签: vb.net wcf web-services

我无法让它正常运行。被抛出的异常(EndPointNotFound)和我收到的堆栈跟踪的错误消息如下。

我已经做了所有明显的事情(我认为!)检查了端点URI的匹配,服务实际上正在运行,我可以从我的机器上点击它。

如果您告诉我您需要帮助的话,很高兴发布代码!

非常感谢任何帮助!

  

“没有端点在听   可以接受的URL / Service.svc   信息。这通常是由一个引起的   不正确的地址或SOAP操作。看到   InnerException,如果存在,更多   方式“。

     

远程服务器返回错误:(407)需要代理身份验证。       描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪,以获取有关错误及其在代码中的起源位置的更多信息。

     

异常详细信息:System.Net.WebException:远程服务器返回错误:(407)需要代理身份验证。

     

来源错误:

     

第1140行:
      第1141行:公共函数GetMember(ByVal ArdbegMember1 As ArdbegWeb.ArdbegMember)As ArdbegWeb.ArdbegMember实现IArdbegWeb.GetMember       1142行:返回MyBase.Channel.GetMember(ArdbegMember1)       第1143行:结束功能       1144行:

     

源文件:C:\ Documents and Settings \ amayberry \ My Documents \ Visual Studio 2008 \ Projects \ xpertformstest \ ardbeg \ ardbeg \ ArdbegWeb.vb Line:1142

     

堆栈追踪:

     

[WebException:远程服务器返回错误:(407)需要代理身份验证。]          System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)+1868309          System.Net.HttpWebRequest.GetRequestStream()+ 13          System.ServiceModel.Channels.WebRequestHttpOutput.GetOutputStream()+68

     

[EndpointNotFoundException:https://www.URL/service.svc没有可以接受该消息的端点。这通常是由错误的地址或SOAP操作引起的。有关详细信息,请参阅InnerException(如果存在)。]          System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)+7596735          System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData,Int32 type)+275          ardbeg.IArdbegWeb.GetMember(ArdbegMember ArdbegMember1)+0          ardbeg.ArdbegWebClient.GetMember(ArdbegMember ArdbegMember1)在C:\ Documents and Settings \ amayberry \ My Documents \ Visual Studio 2008 \ Projects \ xpertformstest \ ardbeg \ ardbeg \ ArdbegWeb.vb:1142          ardbeg._Default.Button1_Click1(Object sender,EventArgs e)位于C:\ Documents and Settings \ amayberry \ My Documents \ Visual Studio 2008 \ Projects \ xpertformstest \ ardbeg \ ardbeg \ Default.aspx.vb:40          System.Web.UI.WebControls.Button.OnClick(EventArgs e)+111          System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)+110      System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)+10          System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl,String eventArgument)+13          System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)+36          System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+1565

修改

我认为这应该是我的应用程序实际上如何访问Web服务的问题 - 尽管我的浏览器可以访问web服务(由于整个企业的访问限制,我必须使用非默认代理来执行此操作),我认为我编译的应用程序不会自动使用它。有没有明显的方法可以检查,如果这是问题,我将如何强制它使用它?

修改

主页后面的代码:

Dim myBinding As New WSHttpBinding()


myBinding.Security.Mode = SecurityMode.Transport
myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Certificate

Dim ea As New EndpointAddress("https://URL/service.svc")

Dim cc As New ArdbegWebClient(myBinding, ea)
cc.ClientCredentials.ClientCertificate.SetCertificate( _
StoreLocation.CurrentUser, StoreName.My, X509FindType.FindBySubjectName, "CERTIFICATE")
Dim abMem As New ArdbegMember
Dim retMem As New ArdbegMember

abMem.MemberID = TextBox1.Text

Try
    cc.Open()
    retMem = cc.GetMember(abMem)
    MesgBox(retMem.Surname)
    cc.Close()

Catch cex As CommunicationException
    MesgBox("CommEX - " & cex.Message)
    cc.Abort()
Catch tex As TimeoutException
    MesgBox("TimeEX - " & tex.Message)
    cc.Abort()
Finally
    MesgBox("Closed the Client")
End Try

我现在要做的就是输入一个客户端ID号,并通过网络服务返回他们的姓氏 - 只是为了让我知道它正在运作。

1 个答案:

答案 0 :(得分:2)

我已经弄清楚了问题,出于某种原因改变了Internet Explorer中的代理设置(尽管事实上我根本不使用它)来匹配我知道允许我点击Web服务的设置似乎有允许我的代码点击它。

我不知道如何或为什么,因为我的代码只在FF中运行,但这似乎让它可以工作。