在我的WCF Web服务中生成svc / wsdl URL

时间:2013-03-28 07:44:25

标签: wcf web-services svc

通常当我实施第三方WCF网络服务时,我会得到一个以.svc扩展名结尾的网址。

我刚刚在VS2010中创建了一个WCF Web服务,我可以运行该服务,但我在测试客户端中看不到任何以.svc扩展名结尾的URL。

为了获得这样的URL,我还需要做些什么吗?因为通常从那里人们能够通过添加?wsdl来获得WSDL,如:  http://site.com/service1.svc?wsdl

如何在我的网络服务中生成这样的网址?


这就是我在App.Config中所拥有的:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <system.web>
    <compilation debug="true" />
  </system.web>
  <!-- When deploying the service library project, the content of the config file must be added to the host's 
  app.config file. System.Configuration does not support config files for libraries. -->
  <system.serviceModel>
    <services>
      <service name="TestWebservice.Test">
        <endpoint address="" binding="wsHttpBinding" contract="TestWebservice.ITest">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8732/Design_Time_Addresses/TestWebservice/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, 
          set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="True"/>
          <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

</configuration>

修改

我从配置文件中删除了mexHttpBinding端点。当我启动我的Web服务时,它会自动显示WSDL的URL:

http://localhost:8732/Design_Time_Addresses/TestWebservice/?wsdl

/部分之前的?wsdl似乎 非常 重要。否则它将无法工作。

但这仍然让我想到了我的最后一个问题。如何指定.svc文件的URL?我想要一个类似于:http://localhost:8732/Design_Time_Addresses/TestWebservice/Test.svc?wsdl

的网址

编辑2

我进一步了。我读到了这个:http://msdn.microsoft.com/en-us/library/aa751792.aspx

所以我使用以下代码在项目的根目录中创建了一个Test.svc文件:

<% @ServiceHost Service="TestWebservice.ITest" %>

然后我尝试通过以下网址访问我的svc文件,但两者都不适用于我:

http://localhost:8732/Design_Time_Addresses/TestWebservice/Test.svc
http://localhost:8732/Design_Time_Addresses/Test.svc

甚至可以在Visual Studio中托管svc吗?或者我真的需要先在IIS中托管它吗?


编辑3 - 修复!

我终于有了它的工作!我将mexHttpBinding重新添加到我的App.Config。

我安装了IIS7。将Web服务发布到我的C:\驱动器中的文件夹。然后在IIS中映射该文件夹并尝试在浏览器中请求.svc文件。

起初它对我不起作用,因为它无法识别.svc扩展名。然后,我所要做的就是输入以下cmd:aspnet_regiis.exe -i,现在一切正常。

现在一切似乎都运转正常。猜测当Visual Studio托管服务时,您无法请求.svc文件。但它在IIS中托管时有效。

0 个答案:

没有答案