C# - Удаленный сервер возвратил ошибку: (403) Запрещенная ошибка при доступе к веб-службе SOAP - PullRequest
0 голосов
/ 13 марта 2020

Я создал веб-приложение 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)

, я не уверен, как использовать й Решение выше.

Любая помощь очень ценится.

...