2012-01-09 3 views
3

Я пытаюсь использовать Svcutil для экспорта метаданных для генерации прокси-сервера из локально размещенной службы. Я не хочу вдаваться в визуально студии и нажмите кнопку «Добавить ссылку на службу», как это обучение упражнение с моей стороныИспользование svcutil для генерации xsd-файлов для клиентского прокси

Я использую SvcUtil следующим образом (!):

SvcUtil/d: с: \ TEMP/т: метаданные http://localhost/IISCalculatorService/service.svc

Это генерирует два WSDL-файлы, calculatorservice.wsdl и tempuri.org.wsdl. Однако я ожидал, что он также сгенерирует два .XSD-файла. Без этих .XSD-файлов я не могу использовать svcutil для создания кода клиента.

Я пропустил что-то в своем использовании svcutil, или это мое недоумение? Любая помощь оценивается.

Вот web.config сервиса

<?xml version="1.0"?> 
<configuration> 
    <system.web> 
     <compilation debug="true" targetFramework="4.0"/> 
    </system.web> 
    <system.serviceModel> 
     <behaviors> 
      <serviceBehaviors> 
       <behavior> 
      <serviceMetadata httpGetEnabled="true"/> 
        <serviceDebug includeExceptionDetailInFaults="false"/> 
       </behavior> 
      </serviceBehaviors> 
     </behaviors> 
     <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/> 
     <services> 
      <service name="CalculatorService.Calculator"> 
       <endpoint address="" binding="basicHttpBinding" contract="CalculatorService.Contracts.ICalculator" /> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
      </service> 
     </services> 
    </system.serviceModel> 
    <system.webServer> 
     <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
</configuration> 
+1

Вы можете создать прокси-сервер, используя svcutil , а затем использовать прокси-сервер в своем проекте, если вы не хотите делать это с помощью ссылки Добавить службу. Если вы хотите, чтобы xsd связался с wsdl, чтобы проверить что-то в нем, вы можете просто загрузить его с указанного URL-адреса в wsdl и добавить его в свой проект. – Rajesh

ответ

3

Если вы ищете ссылки на службу непосредственно, вы можете попробовать это

svcutil.exe http://localhost/IISCalculatorService/service.svc?wsdl 

Надеется, что это помогает вам.

+0

Спасибо, попробовал это и получил сообщение от svcutil, в котором говорится: «... документы метаданных не содержали каких-либо действительных контрактов или услуг ....» – SkeetJon

+0

Можете ли вы просмотреть http: //localhost/IISCalculatorService/service.svc и http: //localhost/IISCalculatorService/service.svc?wsdl в IE? Может быть, есть некоторые проблемы с хостингом вашего сервиса. –

+0

Да, они могут отлично подойти к ним. Думал, что служба не позволяет svcutil/wsdl видеть информацию, которая ему нужна. – SkeetJon

4

Используйте disco.exe для создания XSD-файлов. http://msdn.microsoft.com/en-us/library/cy2a3ybs%28v=vs.80%29.aspx

Open Visual Studio Command Prompt и писать диско http://localhost/IISCalculatorService/service.svc

+0

Спасибо. Это генерирует calculator.wsdl, services.disco, service.wsdl и results.discomap. (файлы .xsd). Ссылка MSDN предлагает использовать wsdl.exe для генерации кода клиента. i .e. XSD не требуется для подачи svcutil? – SkeetJon

+0

Возможно ли, что служба настроена неправильно в web.config? – SkeetJon

+0

Какую цель вы хотите достичь? Если вы просто хотите, чтобы прокси-сервер C# вызывал, но не хочет использовать ссылку на службу добавления в VS, вы можете просто сделать svcutil http: //localhost/IISCalculatorService/service.svc – KMan

Смежные вопросы