Wcf, проблемы после недавнего обновления WindowsC#

Место общения программистов C#
Ответить
Anonymous
 Wcf, проблемы после недавнего обновления Windows

Сообщение Anonymous »

в моей компании мы все еще используем WCF для некоторых небольших операций.
(мы знаем, что это старая технология, но нам нужно много времени для обновления)
С этой ночи на многих компьютерах с Windows, после этого обновления Windows (см. изображение ниже)
последнее обновление Windows, найденное в истории компьютеров
Wcf перестал работать, и обычная страница, которую мы привыкли видеть через браузер
вот пример страница
перестала отвечать с ошибкой ERR_CONNECTION_RESET в браузере
тест после обновлений
Ошибок вообще нет: ни на стороне программного обеспечения, ни на стороне ОС
У кого-то есть подобная проблема?
Или, может быть, у вас есть предложение?
  • мы попробовали удалить обновление Windows, но проблема все еще здесь.
  • мы пытались создать более простую версию приложения с более простой версией WCF, но проблема все еще здесь.
Исходное программное обеспечение написано на vb.net, использует некоторую библиотеку C# и работает в платформе 4.8.
Даже тестовое приложение написано на C# и работает в платформе 4.8.
Если вы хотите протестировать, вот небольшой проект C#, который пытается запустить простой wcf для каждого найденного IP
https://www.dropbox.com/scl/fi/ffp36nst ... sl11m&dl=0
Но если вы не хотите ничего скачивать, вы можете использовать это код

Код: Выделить всё

    private void StartWcf(string ip, int port)
{
var uri = $"http://{ip}:{port}/ITest";
try
{
var suri = $"https://{ip}:{port}/ITest";
var adrbase = new Uri(uri);
var wcf = new System.ServiceModel.ServiceHost(typeof(ServiceWCF), adrbase);
if (!wcf.Description.Behaviors.Any(x => x.GetType().Equals(typeof(ServiceDebugBehavior))))
wcf.Description.Behaviors.Add(new ServiceDebugBehavior { IncludeExceptionDetailInFaults = true });
else
((ServiceDebugBehavior)wcf.Description.Behaviors[typeof(ServiceDebugBehavior)]).IncludeExceptionDetailInFaults = true;

if (wcf.Description.Behaviors.Any(x => x.GetType().Equals(typeof(ServiceBehaviorAttribute))))
{
((ServiceBehaviorAttribute)wcf.Description.Behaviors[typeof(ServiceBehaviorAttribute)]).IncludeExceptionDetailInFaults = true;
}

wcf.Description.Behaviors.Add(new System.ServiceModel.Description.ServiceMetadataBehavior { HttpGetEnabled = true, });
var httpb = new System.ServiceModel.BasicHttpBinding
{
MaxBufferPoolSize = 2147483647,
MaxBufferSize = 2147483647,
MaxReceivedMessageSize = 2147483647
};
wcf.AddServiceEndpoint(typeof(IServiceWCF), httpb, uri);
wcf.AddServiceEndpoint(typeof(System.ServiceModel.Description.IMetadataExchange), System.ServiceModel.Description.MetadataExchangeBindings.CreateMexHttpBinding(), "mex");
wcf.Open();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Естественно, вам понадобятся эти 2 класса

Код: Выделить всё

[ServiceContract]
public interface IServiceWCF
{
[OperationContract]
bool OnLine();
}

public class ServiceWCF : IServiceWCF
{
public bool OnLine()
{
return true;
}
}
Как вы увидите, Wcf запустится (возможно, вам потребуются права администратора) обычно на компьютере, на котором не установлено это обновление, но у вас возникнет «слишком синтетическая» ошибка, если обновления Windows запущены.

Подробнее здесь: https://stackoverflow.com/questions/797 ... ows-update
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»