2010-06-13 1 views
2

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

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

"Configuration binding extension 'system.serviceModel/bindings/ netOnewayRelayBinding' could not be found."

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

<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> 

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

An error occurred creating the configuration section handler for system.serviceModel/client: That assembly does not allow partially trusted callers.
(\TrafficLights\TrafficController\bin\Debug\TrafficController.vshost.exe.Config line 4)

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

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

ответ

1

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

С одной стороны, вы, скорее всего, потребуется обновление Windows Azure Tools for Visual Studio 1.2 для того, чтобы сделать эту работу с VS 2010

+0

Марк - Это было бы - я не знал, что мне нужна счет на Windows Azure (несколько смущен). Как я упоминал в своем электронном письме, это был мой первый набег на VS 2010, и WCF не казался таким значительным «достижением» в VS 2008. Я думаю, пришло время купить справочник WCF 2010 года. Спасибо за вашу помощь. Bill – Bill

+0

@Bill: Я думаю, что у Juval есть версия этого светофора, которое работает с netTcpBinding или что-то, что вы можете обрабатывать локально, в вашей локальной сети, без Azure ... –

+0

@Bill: вы можете просто добавить ссылку к Microsoft.Servicebus.dll, и проект будет скомпилирован. На самом деле вам не понадобится Azure для большинства примеров. Кроме того, вам нужно быть осторожным, потому что большинство примеров iDesign включают некоторую версию ServiceModelEx. Если вы разархивируете загрузки в неправильном порядке, у вас могут возникнуть проблемы. –