Asp.net WCF未绑定到URL
我有一个我刚刚编写的小程序,它使用以下uri模板Asp.net WCF未绑定到URL,asp.net,wcf,iis,rest,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 工作正常,但是当我尝试将其deply到远程计算机时,我得到了一个500错误,当我看到500错误时,服务器似乎在试图在blahblah.svc/xml/中查找web.config 在blahblah
[UriTemplate = "xml/{user_id}/{content_id}/{time}")]
在我的本地开发机器上
/blahblah.svc/xml/1/1/1
在我的远程机器上
/myapp/blahblah.svc/xml/1/1
工作正常,但是当我尝试将其deply到远程计算机时,我得到了一个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应用 尝试添加这一行
<endpoint name="mexHttpBinding" address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
之后
这是一个奇怪的问题,因此我发现Microsoft WCF在使用UriTemplate+ServiceContract进行REST实现时存在一个相当缺乏的问题 如果您正在使用IIS并在UNC路径(即NFC、SMB或CIFS系统)上承载此内容,则它无法正常工作。您必须将服务移动到本地目录才能运行
我使用Windows7和WindowsServer2008R2在两个不同的盒子(一个SMB和一个NFS)上尝试了这一点,两个盒子上都出现了相同的问题 500状态代码可能是在服务器上处理请求时引发了一些异常。你试过调试服务吗?如果托管在IIS上,我想虚拟目录路径不会引起任何问题。确保远程prod服务器上的应用程序池目标框架我担心这没有帮助,因为它只更改了元数据端点。元数据部分已经工作了,但web部件没有工作
<endpoint address ="" binding="webHttpBinding" contract="JASWebservices.IJCPSRest" behaviorConfiguration="web">
</endpoint>