C# 无法解析远程名称:';sandbox.api.mastercard.com';

C# 无法解析远程名称:';sandbox.api.mastercard.com';,c#,mastercard,C#,Mastercard,我正试图通过MoneySend api在MasterCard的沙箱上请求付款。下面是c语言的示例代码# 问题陈述: 当我试图直接通过visual studio发出请求时,它工作得非常好,但当我在IIS上部署此服务时,显示了一个错误 无法解析远程名称:“sandbox.api.mastercard.com” 进一步解释: 在VS 2017中创建了解决方案,在it中创建了两个项目,一个是服务,另一个是在控制台中测试相同的服务。通过在控制台中指向服务的服务引用,它工作得很好。当我在IIS上部署服务并在

我正试图通过MoneySend api在MasterCard的沙箱上请求付款。下面是c语言的示例代码#

问题陈述:

当我试图直接通过visual studio发出请求时,它工作得非常好,但当我在IIS上部署此服务时,显示了一个错误

无法解析远程名称:“sandbox.api.mastercard.com”

进一步解释:

在VS 2017中创建了解决方案,在it中创建了两个项目,一个是服务,另一个是在控制台中测试相同的服务。通过在控制台中指向服务的服务引用,它工作得很好。当我在IIS上部署服务并在控制台应用程序中将服务的端点从本地VS链接替换为已部署的IIS链接时,我遇到了上述错误

更新:

我在一家公司工作,那里的互联网服务有自己的dns和代理设置

完全异常:

MasterCard.Core.Exceptions.ApiException:无法解析远程名称:“sandbox.api.MasterCard.com”--> System.Net.WebException:无法解析远程名称: 'sandbox.api.mastercard.com' 位于System.Net.HttpWebRequest.GetRequestStream(TransportContext和context) 在System.Net.HttpWebRequest.GetRequestStream()中 位于RestSharp.Http.WriteRequestBody(HttpWebRequest-webRequest) 在RestSharp.Http.PostPutInternal(字符串方法) 在RestSharp.RestClient.Execute(IRestRequest请求,字符串httpMethod,Func`3 getResponse) ---内部异常堆栈跟踪的结束--- 在MasterCard.Core.ApiController.Execute(OperationConfig配置、OperationMetadata元数据、BaseObject请求映射) 在MasterCard.Core.Model.BaseObject.Execute[T](字符串操作uuid,T inputObject) 位于MasterCard.Api.Moneysend.Payment.Create(RequestMap) 在C:\Users\name\Documents\My Received中的MasterCardWebService.MoneySend.testService()中 Files\MasterCardWebService\MasterCardWebService\MasterCardWebService\MoneySend.svc.cs:line 128


似乎您的DNS没有解析。你可以这样强制它:

在服务器上以管理员身份打开记事本。 浏览并打开C:\Windows\System32\drivers\etc\hosts

在底部添加:88.221.244.150 sandbox.api.mastercard.com

保存文件


应用程序现在应该可以找到sandbox.api.mastercard.com。

通过将代理添加到服务项目的web.config中解决

<system.net>
    <defaultProxy useDefaultCredentials="false">
      <proxy
        proxyaddress="http://myurladdress:myport"
        bypassonlocal="True"
        usesystemdefault="False"
      />
    </defaultProxy>
</system.net>


顺便说一句,这是一个看起来很糟糕的“API”。嗯,我猜万事达卡不允许你在本地机器上复制他们的服务。有点sense@MickyD我想你完全误解了这个问题。根据OP,上述代码在使用VS调试器运行应用程序时有效(因此使用IIS Express),但在IIS中运行应用程序时失败。@Stijn错误消息与此处发布的代码或IIS无关。这是一条普通的旧DNS错误消息。它说找不到
sandbox.api.mastercard.com
。从副本的回答
可以看出,您的机器正在使用一个过滤查询的DNS服务器。这在公司环境中很常见;过滤是为了阻止恶意软件工作。
。真正的解决方案是与管理员通信,以了解DNS是如何配置的以及过滤了哪些内容。无论如何,您都必须在产品部署之前执行此操作。应用程序池可能必须在特定帐户下运行。与此同时,一个黑客可能会将IIS应用程序池配置为与您的帐户一起运行。另一种黑客行为可能是编辑
主机
文件并输入目标的IPgot异常:
无法连接到远程服务器
内部异常:
连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机未能响应88.221.244.150:443
当我在浏览器中运行此
sandbox.api.mastercard.com
时,它表示服务不可用,
服务器暂时无法为您的请求提供服务。请稍后再试。
带参考号
<system.net>
    <defaultProxy useDefaultCredentials="false">
      <proxy
        proxyaddress="http://myurladdress:myport"
        bypassonlocal="True"
        usesystemdefault="False"
      />
    </defaultProxy>
</system.net>