WCF不绑定到URL

时间:2012-06-06 18:13:52

标签: asp.net wcf iis rest

我有一个小的我刚刚写的使用以下uri模板。

[UriTemplate = "xml/{user_id}/{content_id}/{time}")]

在我的本地开发机器上

/blahblah.svc/xml/1/1/1

在我的远程计算机上

/myapp/blahblah.svc/xml/1/1/1

工作,但是当我尝试将其转移到远程计算机时,我得到500错误,当我查看500错误时,服务器似乎试图在blahblah.svc / xml /中查找web.config。

在blahblah.svc之后,它似乎没有正确绑定到url。

在我的web.config中,我有: -

<system.serviceModel>
     <services>
  <service name="JASWebservices.JCPSRest" behaviorConfiguration="ServiceBehaviour">
    <endpoint address ="" binding="webHttpBinding" contract="JASWebservices.IJCPSRest" behaviorConfiguration="web">
    </endpoint>
  </service>
</services>

<behaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehaviour">
      <serviceMetadata httpGetEnabled="true"/>
      <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="web">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
   </system.serviceModel>

因此,如果我在本地(在我的开发机器上)访问它,它就可以工作。 如果我在prod服务器上远程访问它500s。我目前唯一可以看到的区别是开头包含/ myapp /,因为prod服务器上有多个站点,每个站点都有自己的Web应用程序。

2 个答案:

答案 0 :(得分:0)

尝试添加此行

<endpoint name="mexHttpBinding" address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

<endpoint address ="" binding="webHttpBinding" contract="JASWebservices.IJCPSRest" behaviorConfiguration="web">
</endpoint>

答案 1 :(得分:0)

这是一个奇怪的问题,因此我在使用UriTemplate + ServiceContract将其用于REST实现时,在Microsoft WCF中发现了一个相当缺乏的问题。

如果您使用的是IIS并在UNC路径(即NFC或SMB或CIFS系统)上托管它,则它无法正常工作。您必须将服务移动到本地目录才能运行。

我使用Windows 7和Windows Server 2008 R2在两个不同的盒子(一个SMB和一个NFS)上尝试了这个,并且两者都出现了同样的问题。