Ask*_*kMe 12 .net c# asp.net wcf web
从控制台应用程序客户端调用时,我的WCF服务返回结果.然而,它正在显示
例外:无法连接到远程服务器
实际错误:
无法调用该服务.可能的原因:服务离线或无法访问; 客户端配置与代理不匹配; 现有代理无效.有关更多详细信息,请参阅堆栈跟踪.您可以尝试通过启动新代理,还原到默认配置或刷新服务来进行恢复.
错误详情:
由于内部错误,服务器无法处理请求.有关错误的更多信息,请在服务器上启用IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute或配置行为),以便将异常信息发送回客户端,或者根据Microsoft .NET Framework SDK文档打开跟踪,检查服务器跟踪日志.
服务器堆栈跟踪:在System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(消息回复,MessageFault错误,字符串操作,MessageVersion版本,FaultConverter faultConverter)处于System的System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime操作,ProxyRpc和rpc). ServiceModel.Channels.ServiceChannel.Call(String action,Boolean oneway,ProxyOperationRuntime operation,Object [] ins,Object [] outs,TimeSpan timeout)在System的System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime操作). ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage消息)
在[0]处重新抛出异常:在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)处于IJiraService.GetProjects的System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32类型)处( )在JiraServiceClient.GetProjects()
请注意,当Fiddler运行时,该服务工作正常.但是,如果我关闭Fiddler,那么它显示异常:
这是Fiddler日志(当我得到数据时):
TTP/1.1 200连接成立日期:2015年8月6日星期四14:39:22 GMT代理连接:保持活动通过:1.1 localhost.localdomain
加密的HTTPS流量流经此CONNECT隧道.在Fiddler中启用了HTTPS解密,因此在此隧道中运行的解密会话将显示在"Web会话"列表中.
安全协议:Tls Cipher:Aes128 128bits哈希算法:Sha1 160bits密钥交换:ECDHE_RSA(0xae06)256bits
==服务器证书========== [主题] CN =*.atlassian.net,O ="Atlassian Network Services,Inc.",L =旧金山,S =加州,C = US
[Issuer] CN = DigiCert SHA2 High Assurance Server CA,OU = www.digicert.com,O = DigiCert Inc,C = US
[序列号] 08E828A2F8C521A2DC7121A28E191837
[不是之前] 9/9/2014 5:30:00 AM
[Not After] 11/15/2017 5:30:00 PM
[指纹] EA57BE3C6CDA33E6D875889944EE61284E39D91D
HTTP/1.1 200 OK服务器:nginx日期:星期四,06 Aug 2015 14:39:26 GMT Content-Type:application/json; charset = UTF-8 Transfer-Encoding:chunked Connection:keep-alive Vary:Accept-Encoding X -AREQUESTID:39x4118x1 X-ASEN:SEN-2425233 Set-Cookie:JSESSIONID = 8B68E46928883CA9F99382A67C228541; 路径= /; 安全; HttpOnly Set-Cookie:studio.crowd.tokenkey =""; 域= .clientname.atlassian.net; Expires = Thu,01-Jan-1970 00:00:10 GMT; 路径= /; 安全; HttpOnly X-Seraph-LoginReason:OUT Set-Cookie:studio.crowd.tokenkey = YcO0N1IItmmGYah6bzgN0w00; 域= .clientname.atlassian.net; 路径= /; 安全; HttpOnly X-Seraph-LoginReason:OK Set-Cookie:atlassian.xsrf.token = ALMX-0SVV-VVCK-3Y73 | c420e5bfab5c997ccdfa21ffa129d60a69af0013 | lin; 路径= /; 安全X-ASESSIONID:b2v6it X-AUSERNAME:admin X-ATENANT-ID:clientname.atlassian.net缓存控制:无缓存,无存储,
如上所述Fiddler日志是我必须在web.config文件中更改的东西,以使其工作?
从WCF测试客户端调用时.这是我尝试过的:
Web.config文件:
<?xml version="1.0"?>
<configuration>
<!--<system.net>
<defaultProxy useDefaultCredentials="true" >
</defaultProxy>
</system.net>-->
<appSettings>
<add key="UserName" value="admin"/>
<add key="Password" value="admin"/>
<add key="resturl" value="https://Clientname.atlassian.net/rest/api/2/"/>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5"/>
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IJiraService"/>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:19065/JiraService.svc" binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_IJiraService" contract="ServiceReference1.IJiraService"
name="BasicHttpBinding_IJiraService" />
</client>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<!--
To browse web app root directory during debugging, set the value below to true.
Set to false before deployment to avoid disclosing web app folder information.
-->
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这是我在我的代码中请求的方式:
public class Service : IService
{
private string GetRestURL()
{
return System.Configuration.ConfigurationManager.AppSettings["resturl"];
}
private string GetUserName()
{
return System.Configuration.ConfigurationManager.AppSettings["MyUserName"];
}
private string GetPassword()
{
return System.Configuration.ConfigurationManager.AppSettings["MyPassword"];
}
public string method()
{
HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest;
// HttpClient
request.ContentType = "application/json; charset=UTF-8";
//request.ContentType = "text/xml; charset=UTF-8";
/*request.Headers.Add("X-Atlassian-Token", "nocheck");
request.UseDefaultCredentials = true;
request.KeepAlive = true;*/
request.Method = method;
/*if (data != null)
{
using (StreamWriter writer = new StreamWriter(request.GetRequestStream(),Encoding.ASCII))
{
writer.Write(data);
}
}*/
string base64Credentials = GetEncodedCredentials();
request.Headers.Add("Authorization", "Basic " + base64Credentials);
try
{
request.Headers.Add("Authorization", "Basic " + base64Credentials);
response = request.GetResponse() as HttpWebResponse; //here its NULL
if (response.StatusCode != HttpStatusCode.OK)
{
throw new Exception(String.Format("Server error (HTTP {0}:{1}).",response.StatusCode,response.StatusDescription));
}
}
catch (Exception ex) //Here I'm getting exception
{
throw new Exception(ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的方法签名:
[ServiceContract]
public interface IService
{
[OperationContract]
List<ProjectDescription> GetProjects();
}
Run Code Online (Sandbox Code Playgroud)
注意:"方法"从"GetProjects"调用
这是我通过调用WCF测试客户端进行调试时得到的内部异常:
这是我内心异常
连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应165.254.xxx.xxx:443
注意:从控制台应用程序调试时没有调试异常.正如我所说,控制台应用程序工作正常,我能够从服务返回结果.
更新:当我在控制台应用程序中添加此服务作为"添加引用"时,它正常工作.但是,当我在同一个控制台应用程序中添加"添加服务引用"时,它显示同样的错误.我的网络阻止了什么吗?请帮忙.
怎么纠正这个?我还需要添加其他东西web.config
吗?或者我是否需要在某个地方允许URL作为可信URL?
归档时间: |
|
查看次数: |
1659 次 |
最近记录: |