Я создал веб-приложение C#, которое получает данные из веб-службы SOAP, но не могу найти причину, по которой я получаю (403) Запрещенную ошибку при доступе к веб-приложению через URL-адрес моего офисный сервер (например, URL: http://x.x.x.x/WebApp/Default.aspx). Он прекрасно работает, когда размещен в моем Windows 10 P C (например, URL: http://localhost/WebApp/Default.aspx)).
Мой офисный сервер Windows Server 2016, а мой P C работает на Windows 10. Сначала я подумал, что это вызвано настройкой аутентификации на сервере веб-службы, но я не уверен, почему это хорошо работает в localhost. Я сравнил настройки IIS 10 на моем P C и офисном сервере и убедился, что они похожи, и включена анонимная аутентификация.
Сообщение об ошибке:
[WebException: Удаленный сервер возвратил ошибку: (403) Запрещено.]
Система. Net .HttpWebRequest.GetResponse () + 1695
System.ServiceModel.Channels.HttpChannelRequest.WaitForReply (TimeSpan timeout) +74
[MessageSecurityException: HTTP-запрос был запрещен со схемой аутентификации клиента «Аноним».]
Чтобы извлечь данные из веб-службы SOAP, я добавил ссылку на службу и написал следующий код :
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>
Некоторые люди сталкивались с подобной ошибкой, подобной этой: Удаленный сервер возвратил ошибку: (403) Запрещено , и решение состоит в том, чтобы добавить следующую строку:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.UseDefaultCredentials = true;
Поскольку я использую Справочник услуг и у меня нет строки
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url)
, я не уверен, как использовать й Решение выше.
Любая помощь очень ценится.