【发布时间】:2017-05-15 17:37:19
【问题描述】:
我通过 https 连接到 wcf 服务时遇到问题。我没有创建 wcf 服务。在 Internet Explorer 中,当我设置 url 结束打开页面时,要求我输入用户名和密码。
我打开了一个新的 C# 项目,想添加新的服务引用,但每次我得到错误:
下载“https://address/path/service.svc/_vti_bin/ListData.svc/$metadata”时出错。 底层连接已关闭:发送时发生意外错误。 无法从传输连接读取数据:现有连接被远程主机强行关闭。 现有连接被远程主机强行关闭 元数据包含无法解析的引用:“https://address/path/service.svc.svc”。 向 https://address/path/service.svc.svc 发出 HTTP 请求时出错。这可能是由于在 HTTPS 情况下未使用 HTTP.SYS 正确配置服务器证书。这也可能是由于客户端和服务器之间的安全绑定不匹配造成的。 底层连接已关闭:发送时发生意外错误。 无法从传输连接读取数据:现有连接被远程主机强行关闭。 现有连接被远程主机强行关闭 如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。
我还尝试下载 wsdl 文件,并通过添加服务引用添加了这个本地 wsdl 文件。它通过了,但现在当我启动客户端时出现异常:
未提供用户名。在 ClientCredentials 中指定用户名。
try
{
ServiceReference1.IService stub = new ServiceReference1.ServiceClient();
stub.calculate("test");
}
catch (Exception ee)
{
}
但我在存根对象中没有 ClientCredentials 选项???
app.config
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/></startup>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_IService">
<security mode="Transport">
<transport clientCredentialType="Basic" proxyCredentialType="Basic" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://address/path/service.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
contract="ServiceReference1.IService" name="BasicHttpBinding_IService" />
</client>
</system.serviceModel>
我该如何解决这个问题??
【问题讨论】: