C#-远程服务器返回错误:(403)访问SOAP Web服务时出现禁止错误

时间:2020-03-13 03:55:45

标签: c# soap-client webservice-client

我创建了一个C#Web应用程序,该应用程序从SOAP Web服务中获取数据,但找不到通过URL访问我的办公服务器的Web应用程序时出现(403)禁止错误的原因(例如网址:http://x.x.x.x/WebApp/Default.aspx)。将其托管在Windows 10 PC(例如URL:http://localhost/WebApp/Default.aspx)上时,它可以很好地工作。

我的办公室服务器是Windows Server 2016,我的PC在Windows 10上运行。起初,我认为这是由Web服务服务器中的“身份验证”设置引起的,但我不确定为什么它在本地主机中可以正常工作。我已经比较了PC和办公室服务器中的IIS 10设置,并确保它们相似并且启用了匿名身份验证。

错误消息:

[WebException:远程服务器返回错误:(403)禁止。]
System.Net.HttpWebRequest.GetResponse()+1695
System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan超时)+74

[MessageSecurityException:客户端身份验证方案'Anonymous'禁止HTTP请求。]

要从SOAP Web服务中提取数据,我添加了服务引用并编写了以下代码:

protected void Button1_Click(object sender, EventArgs e)
{
    ServiceReference1.Dataservice service = new ServiceReference1.Dataservice();
    string livedata = service.PlantData();
    Label1.text = livedata;
}

web.config文件中的绑定:

<basicHttpBinding>
    <binding name="DataServiceSoap">
      <security mode="Transport">
        <transport clientCredentialType="None" />
      </security>
    </binding>
</basicHttpBinding>

有些人遇到了类似的错误:The remote server returned an error: (403) Forbidden,解决方案是添加以下行:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.UseDefaultCredentials = true;

因为我使用了服务参考,但是没有

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url)

一行,我不确定如何使用上面的解决方案。

我们非常感谢您的帮助。

0 个答案:

没有答案