0

我有一个我刚刚编写的小程序,它使用以下 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 服务器上远程访问它,它需要 500 秒。目前我能看到的唯一区别是在开头包含 /myapp/,因为 prod 服务器上有多个站点,每个站点都有自己的 Web 应用程序。

4

2 回答 2

0

尝试添加这一行

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

<endpoint address ="" binding="webHttpBinding" contract="JASWebservices.IJCPSRest" behaviorConfiguration="web">
</endpoint>
于 2012-06-08T06:59:19.140 回答
0

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

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

我在使用 Windows 7 和 Windows Server 2008 R2 的两个不同的机器(一个 SMB 和一个 NFS)上进行了尝试,并且两者都出现了相同的问题。

于 2012-06-08T10:43:18.987 回答