Ошибка «Не был сгенерирован код» при попытке создать прокси-сервер веб-службы с помощью SVCUTIL.EXE - PullRequest
2 голосов
/ 17 сентября 2010

При попытке создать прокси-сервер веб-службы (WCF) с помощью SVCUTIL.EXE (в командной строке или с помощью Visual Studio) я получаю следующее бессмысленное сообщение об ошибке.

Примечание. С сервисом все в порядкекак это работает на другой машине просто отлично.Это новая установка Windows, и сервис находится на моем локальном компьютере.Генерация одного и того же прокси на моем компьютере с использованием URL-адреса на другом компьютере работает нормально.

Что происходит?!

Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 4.0.30319.1]
Copyright (c) Microsoft Corporation.  All rights reserved.

Attempting to download metadata from 'https://ws1.example.com/ShoppingCartWS/WCF/ShoppingCartWCF.svc?wsdl' using WS-Metadata Exchan
Error: Cannot import wsdl:portType
Detail: An exception was thrown while running a WSDL import extension: System.ServiceModel.Description.DataContractSerializerMessageCont
Error: Schema with target namespace '' could not be found.
XPath to Error Source: //wsdl:definitions[@targetNamespace='']/wsdl:portType[@name='IShoppingCart']


Error: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='']/wsdl:portType[@name='IShoppingCart']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='WSHttpBinding_IShoppingCart']   

.....    

Error: Cannot import wsdl:binding
Detail: There was an error importing a wsdl:portType that the wsdl:binding is dependent on.
XPath to wsdl:portType: //wsdl:definitions[@targetNamespace='']/wsdl:portType[@name='IShoppingCart']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='BasicHttpBinding_IShoppingCart1']


Error: Cannot import wsdl:port
Detail: There was an error importing a wsdl:binding that the wsdl:port is dependent on.
XPath to wsdl:binding: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='BasicHttpBinding_IShoppingCart1']
XPath to Error Source: //wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:service[@name='ShoppingCartWCF']/wsdl:port[@name='BasicHttpBinding_IShoppingCart1']


Generating files...
Warning: No code was generated.
If you were trying to generate a client, this could be because the metadata documents did not contain any valid contracts or services
or because all contracts/services were discovered to exist in /reference assemblies. Verify that you passed all the metadata documents to the tool.

Warning: If you would like to generate data contracts from schemas make sure to use the /dataContractOnly option.

1 Ответ

5 голосов
/ 17 сентября 2010

Это сообщение об ошибке Warning: No code was generated может быть вызвано отсутствием разрешений для пользователя пула приложений в каталоге C:\Windows\Temp (да, действительно!)

Если вы получаете эту ошибку, я сначала предлагаю вам переключиться на командную строку, если вы пытаетесь использовать диалоговое окно «Добавить ссылку на службу». Запустите эту команду, открыв Fiddler для URL вашего сервиса.

 svcutil.exe https://dev.example.com/ShoppingCartWS/WCF/ShoppingCartWCF.svc?wsdl

Если вы видите, что какой-либо из запросов возвращается как 500 (красным) и следующий ответ, то, вероятно, у вас возникла та же проблема, что и у меня.

ReadResponse() failed: The server did not return a response for this request.                                                                            

Просто отметьте C:\Windows\Temp и просто добавьте любого пользователя, на котором работает ваш пул приложений, чтобы иметь разрешения. Я просто обманул и добавил Everyone, но если безопасность важна, вы должны найти правильное имя пользователя пула приложений из IIS.

Здесь я нашел решение - большое спасибо! .

...