понедельник, марта 17, 2008

The target assembly contains no service types

В прокте используется WCF, причем сами контракты определены в одной сборке (Project.Services.Library as example), а реализации сервисов в другой (Project.Services.MyService as example), а хостились сервисы под asp.net - т.е. наружу выставлял из проекта (Project.Site) только .svc файл...

Вот........:) Cобственно, стала возникать такая проблема, при старте Project.Site (asp.net application) стало возникать сообщение в модальном диалоге:


The target assembly contains no service types

причем появились жуткие тормоза, что не особенно доставляло радости к процессу отладки и так без того досточного тяжелого asp.net приложения...

Решение, по крайне мере, для моего тяжелого случая, оказалось на
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2687265&SiteID=1


если коротко, из файла проекта с*.csproj определением контракта wcf-сервиса нужно просто удалить следующую строку:
<projecttypeguids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</projecttypeguids>>






вторник, марта 11, 2008

8 Марта

8 марта, современный праздник женщины, день весны и красоты, отнюдь не всегда был таким романтичным. Эта дата имеет давнюю историю и весьма туманное происхождение. Вообще то поклоняться женщинам именно 8 марта начали еще древние римляне. В этот день матроны свободнорожденные женщины, состоящие в браке, получали от своих мужей подарки и были окружены вниманием и заботой. Кроме того, 8 марта даже рабыни освобождались от всяческих обязанностей.



Историю же празднования Международного женского дня принято связывать с именем революционерки Клары Цеткин. Именно она на международной конференции женщин в 1910 году в Копенгагене провозгласила идею ежегодно отмечать 8 марта как день рождения женского пролетариата. Выбор Цеткин именно 8 го марта в качестве даты празднования Международного женского дня вызывает разноречивые объяснения. Согласно официальной, широко известной версии, Женский день был приурочен к событиям 1857 года, когда 8 марта текстильщицы нью йоркских фабрик прошли маршем по улицам города. Они требовали 10часовой рабочий день, светлые и сухие рабочие помещения, равную с мужчинами заработную плату. Работали в то время женщины по 16 часов в сутки, получая за свой труд гроши.


Мужчинам после решительных выступлений удалось добиться введения 10 часового рабочего дня. На многих предприятиях в США возникли профсоюзные организации. В то историческое 8 марта во многих городах Америки сотни женщин вышли на демонстрацию, требуя представленияим избирательного права.


Однако ряд историков называют и другую религиозную причину возникновения праздника, согласно которой в намерения Цеткин входило связать историю женского социалистического движения с историей ее народа евреев. А именно с той страницей этой истории, которая рассказывает об Эсфири, жене персидского царя Ксеркса.

Царица Эсфирь, воспользовавшись действием на Ксеркса своих чар, спасла иудеев от истребления. Взяв с царя, не знавшего о ее происхождении, обещание, что он уничтожит всех врагов, которые покушаются на ее народ, Есфирь предотвратила планировавшиеся «еврейские погромы».


Есфирь обратила царский приказ против самих персов, желавших истребить иудеев, в честь чего день 13 Адара (этот месяц еврейского календаря приходится на конец февраля начало марта) стал праздноваться как праздник Пурима. Дата празднования Пурима в иудейском религиозном календаре является «скользящей», как в православном дата празднования Пасхи. Однако число празднования Пурима, пришедшееся в 1910 году на 8 марта, закрепилось и прижилось.


В 1911 году Женский день впервые отмечался 19 марта в Австрии, Дании, Германии и Швейцарии. Тогда более миллиона мужчин и женщин приняли участие в манифестациях. Кроме права избирать и занимать руководящие посты, женщины добивались равных производственных прав с мужчинами.


В России впервые Международный женский день отмечался в 1913 году в Петербурге. В прошении на имя градоначальника было заявлено об организации «...научного утра по женскому вопросу». Власти дали разрешение, и 2 марта 1913 года в здании Калашниковской хлебной биржи на Полтавской улице собралось полторы тысяч человек. Повестка дня научных чтений включала следующие вопросы: право голоса для женщин; государственное обеспечение материнства; дороговизна жизни. В 1917 году женщины России вышли на улицы в последнее воскресенье февраля с лозунгами «Хлеба и мира». Через 4 дня император Николай II отрекся от престола, временное правительство гарантировало женщинам избирательное право. Этот исторический день выпал на 23 февраля по юлианскому календарю, который в то время использовался в России, и на 8 марта по григорианскому календарю. Международный женский день 8 марта с первых лет Советской власти стал государственным праздником. С 1965 года этот день стал не рабочим.


Существовал и праздничный ритуал: в этот день на торжественных мероприятиях государство отчитывалось перед обществом о реализации политики в отношении женщин.
Постепенно Международный женский день в стране терял свою политическую окраску.


В 1977 году Организация объединенных наций объявила 8 е марта Международным женским днем. Слово «борьба» из названия праздника исчезло, а 8е марта стало праздником женщин, весны и любви.
После распада Советского Союза день 8 марта остался в перечне государственных праздников Российской Федерации. Отмечается Международный женский день и в странах СНГ: в Азербайджане, Грузии, Казахстане, Киргизии, Молдавии, Таджикистане, Туркмении, Украине, Белоруссии.


ps: не мое, наткнулся и нагло стырил чтобы потом не искать :)

четверг, марта 06, 2008

Одноклеточный попугай

ps: сказано про нашего yahoo - Яшу-попугая, из песни слов не выкинешь, и самое главное ведь - не придерешься, клетка то одна :)

среда, марта 05, 2008

Только что у нас в стае товарищей 8го этажа родилось высказывание:
порнопрограммирование в оральном режиме:)
на манер парного программирования в авральном режиме

понедельник, марта 03, 2008

This collection already contains an address with scheme http.

При очередной выкладке одного из WCF сервисов возникла проблема с настройкой сервиса на продакшн-сервере, получаем постоянно исключение следующего вида (уточнение, сам сервис хостился в среде asp.net в web приложении на iis, доступном сразу по нескольким хостам, приложение по сути является порталом, хостящим разные сайты):



This collection already contains an address with scheme http. There can be at most one address per scheme in this collection.
Parameter name: item


Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.ArgumentException: This collection already contains an address with scheme http. There can be at most one address per scheme in this collection.
Parameter name: item



решение:

Данная ситуация случается в том случае, когда wcf-сервис может быть достугнут сразу по нескольким адресам....т.е. в нашем случае важно было указать из всех доступных хостов по указанному ip-адресу, на котором хостился web - сервис, только один в разрезе различных доступных binding-протоколов, как показано ниже в примере:


ссылки по теме:
http://blogs.msdn.com/rampo/archive/2008/02/11/how-can-wcf-support-multiple-iis-binding-specified-per-site.aspx



How can WCF support multiple IIS Binding specified per site ?


Background

IIS has web sites, which are containers for virtual applications which contain virtual directories. The application in a site can be accessed through one or more IIS binding.

IIS bindings provide two pieces of information – binding protocol and binding information. Binding protocol defines the scheme over which communication occurs, and binding information is the information used to access the site.

Example

Binding protocol – HTTP

Binding Information – IPAddress , Port, Hostheader

IIS supports specifying multiple IIS bindings per site, which results in multiple base addresses per scheme. A WCF service hosted under a site allows binding to only one baseAddress per scheme.



Solution in .Net Fx 3.0:Supporting Multiple IIS Bindings Per Site

Solution in .Net Fx3.5: BaseAddressPrefixFilters





Specifying a prefix filter at the appdomain level via config allows for filtering out unnecessary schemes. The incoming base addresses, supplied by IIS, are filtered based on the optional prefix list filter. By default, when prefix is not specified all addresses are passed through. Specifying the prefix will result in only the matching base address for that scheme to be passed through.


Example


   <system.serviceModel>

<serviceHostingEnvironment>

<baseAddressPrefixFilters>

<add prefix=”net.tcp://payroll.myorg.com:8000”/>

<add prefix=”http://shipping.myorg.com:9000”/>

</baseAddressPrefixFilters>

</serviceHostingEnvironment>

</system.serviceModel>





In the above example, net.tcp://payroll.myorg.com:8000 and http://shipping.myorg.com:9000 are the only base addresses, for their respective schemes, which will be allowed to be passed through. The baseAddressPrefixFilter does not support any wildcards .

The baseAddresses supplied by IIS may have addresses bound to other schemes not present in baseAddressPrefixFilter list. These addresses will not be filtered out.



ссылки по теме:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=373333&SiteID=1
http://www.robzelt.com/blog/2007/01/24/WCF+This+Collection+Already+Contains+An+Address+With+Scheme+Http.aspx
http://www.bokebb.com/dev/english/2047/posts/204720109.shtml