我有一个小的我刚刚写的使用以下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应用程序。
答案 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)上尝试了这个,并且两者都出现了同样的问题。