如何在不重新启动的情况下生成服务模型元数据

时间:2011-05-10 21:20:20

标签: c# wcf visual-studio-2010

我有简单的WCF服务应用程序(基于本教程:Getting Started)。我的问题是,当我向我的应用程序添加一个函数并想使用下面的命令重新生成Proxy.cs文件时:

C:\kod>svcutil.exe /language:cs /out:Proxy.cs /config:app.config http://localhos t:8000/PBMB

我得到以下结果。我知道重新生成这些文件的唯一解决方案是重新启动计算机。但每次改变任何事情时这样做都令人沮丧。有人可以帮忙吗?

结果:

  

Microsoft(R)服务模型元数据   工具[Microsoft(R)Windows(R)   传播基金会,版本   4.0.30319.1]版权所有(c)Microsoft Corporation。保留所有权利。

     

尝试从中下载元数据   'http://localhost:8000/PBMB'正在使用   WS-Metad ata Exchange或DISCO。错误:   无法导入wsdl:portType详细信息:An   运行a时抛出异常   WSDL导入扩展:System.Se   rviceModel.Description.DataContractSerializerMessageContractImporter   错误:具有目标命名空间的架构   无法找到“http://PBMB”。   XPath到错误源:   // WSDL:定义[@targetNamespace = 'http://PBMB'] / WSDL:对   ortType [@名称= 'IService']

     

错误:无法导入wsdl:binding   细节:导入时出错   wsdl:wsdl:binding的portType   依赖于。 XPath到wsdl:portType:   // WSDL:定义[@targetNamespace = 'http://PBMB'] / WSDL:   portType [@ name ='IService'] XPath to   错误来源:   // WSDL:定义[@targetNamespace = 'http://tempuri.org/'   ] / WSDL:结合[@名称= 'WSHttpBinding_IService']

     

错误:无法导入wsdl:port详细信息:   导入时出错   wsdl:绑定wsdl:port   依赖于。 XPath到wsdl:binding:   // WSDL:定义[@targetNamespace = 'http://tempuri.org/'   ] / WSDL:结合[@名称= 'WSHttpBinding_IService']   XPath到错误源:   // WSDL:定义[@targetNamespace = 'http://tempuri.org/'   ] / WSDL:服务[@名称= 'PBMBService'] / WSDL:端口[@名称= 'WSHttpBinding_IService']

     

生成文件...警告:没有代码   生成了。如果你想要   生成一个客户端,这可能是   因为元数据文件确实如此   不包含任何有效合同或   服务或因为所有   合同/服务被发现   存在于/ reference assemblies中。   确认您已通过全部   元数据文档到工具。

     

警告:如果您想要生成   来自模式的数据合同确保   使用/ dataContractOnly选项。

1 个答案:

答案 0 :(得分:3)

(免责声明,我不是这个领域的专家,但我很感兴趣并且用Google搜索了一下)

当您更改服务并重新启动服务时,运行服务的帐户是否可能会发生变化?就像它默认情况下在你启动你的计算机时在IIS下运行但是当你修改它时你在Cassini或类似的东西下启动它?

我问的原因是因为根据this blog post,WCF服务需要具有对temp文件夹的写访问权,因为它执行一些动态代码生成并需要一些地方来存储它。

只是一个值得考虑的想法。

更多细节: