我无法让它正常运行。被抛出的异常(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号,并通过网络服务返回他们的姓氏 - 只是为了让我知道它正在运作。
答案 0 :(得分:2)
我已经弄清楚了问题,出于某种原因改变了Internet Explorer中的代理设置(尽管事实上我根本不使用它)来匹配我知道允许我点击Web服务的设置似乎有允许我的代码点击它。
我不知道如何或为什么,因为我的代码只在FF中运行,但这似乎让它可以工作。