Ошибки WCF в VS 2010 / .Net 4 с использованием примера приложения публикации / подписки с веб-сайта IDesign - PullRequest
2 голосов
/ 14 июня 2010

Я пытаюсь скомпилировать / запустить образец приложения WCF с сайта Джувала Лоуи ( автор службы программирования WCF и основатель IDesign ).Приложение является примером приложения «светофор» для публикации / подписки, которое требует использования VS 2010 / .Net 4 .Это моя первая попытка использовать что-либо, кроме VS 2008 / Net 3.5.

Первоначально я получил следующую ошибку привязки:

"Не удалось найти расширение привязки конфигурации 'system.serviceModel / bindings / netOnewayRelayBinding'."

Эта ошибка, похоже, была устранена путем внесения изменений в файл .Net 4 machine.config, чтобы включить следующие ссылки из файла .Net 2 machine.config.

<xml>
<bindingElementExtensions>
 <add name="tcpRelayTransport" type="Microsoft.ServiceBus.Configuration.TcpRelayTransportElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
 <add name="httpRelayTransport" type="Microsoft.ServiceBus.Configuration.HttpRelayTransportElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
 <add name="httpsRelayTransport" type="Microsoft.ServiceBus.Configuration.HttpsRelayTransportElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
 <add name="onewayRelayTransport" type="Microsoft.ServiceBus.Configuration.RelayedOnewayTransportElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
 <add name="webMessageEncoding" type="System.ServiceModel.Configuration.WebMessageEncodingElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 <add name="context" type="System.ServiceModel.Configuration.ContextBindingElementExtensionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
 <add name="byteStreamMessageEncoding" type="System.ServiceModel.Configuration.ByteStreamMessageEncodingElement, System.ServiceModel.Channels, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 <add name="discoveryClient" type="System.ServiceModel.Discovery.Configuration.DiscoveryClientElement, System.ServiceModel.Discovery, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</bindingElementExtensions>
<bindingExtensions>
 <add name="webHttpBinding" type="System.ServiceModel.Configuration.WebHttpBindingCollectionElement, System.ServiceModel.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 <add name="basicHttpContextBinding" type="System.ServiceModel.Configuration.BasicHttpContextBindingCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
 <add name="basicHttpRelayBinding" type="Microsoft.ServiceBus.Configuration.BasicHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
 <add name="webHttpRelayBinding" type="Microsoft.ServiceBus.Configuration.WebHttpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
 <add name="ws2007HttpRelayBinding" type="Microsoft.ServiceBus.Configuration.WS2007HttpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
 <add name="netTcpRelayBinding" type="Microsoft.ServiceBus.Configuration.NetTcpRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
 <add name="netOnewayRelayBinding" type="Microsoft.ServiceBus.Configuration.NetOnewayRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
 <add name="netEventRelayBinding" type="Microsoft.ServiceBus.Configuration.NetEventRelayBindingCollectionElement, Microsoft.ServiceBus, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
 <add name="wsHttpContextBinding" type="System.ServiceModel.Configuration.WSHttpContextBindingCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
 <add name="netTcpContextBinding" type="System.ServiceModel.Configuration.NetTcpContextBindingCollectionElement, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</bindingExtensions>

К сожалению, запуск приложения приводит к следующей ошибке безопасности:

Произошла ошибка при создании обработчика раздела конфигурации для system.serviceModel / client:Эта сборка не допускает частично доверенных вызывающих абонентов.
(\ TrafficLights \ TrafficController \ bin \ Debug \ TrafficController.vshost.exe.Config строка 4)

Пример исходного кода доступен для загрузки по адресуследующая ссылка: http://www.idesign.net/idesign/DesktopDefault.aspx?tabindex=-1&tabid=19&download=226

Я знаю, что код Juval здесь не виноват и что, должно быть, я что-то не так делаю с моей конфигурацией VS 2010.Я не смог найти решение онлайн.Может ли кто-нибудь, пожалуйста, направить меня в правильном направлении относительно того, как лучше всего решить эту проблему?

1 Ответ

1 голос
/ 14 июня 2010

Вам известно, что netOnewayRelayBinding - это привязка, связанная с Windows Azure, верно?Чтобы использовать его, вам нужно использовать инфраструктуру Azure ServiceBus, и для этого вам нужна учетная запись в Windows Azure.Просто проверка ....

Во-первых, вам, скорее всего, понадобятся обновленные Windows Azure Tools для Visual Studio 1.2 , чтобы эта работа работала с VS 2010.

...