我有一个非常基本的 WCF 服务,我想在 IIS 上作为 RESTful 服务运行。这是服务合同。
[ServiceContract]
interface IRestCameraWs
{
[OperationContract]
[WebGet(UriTemplate = "/cameras/{username}",ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped)]
CameraInfo[] GetUserCameras(string username);
[OperationContract]
[WebGet(UriTemplate = "/liveimage/{cameraId}",ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped)]
byte[] GetLiveImage(int cameraId);
//void GetLatestImage(int cameraId, out DateTime timestamp, out byte[] image);
[OperationContract]
[WebGet(UriTemplate = "/latestimage/{cameraId}", ResponseFormat = WebMessageFormat.Xml,
BodyStyle = WebMessageBodyStyle.Wrapped)]
string GetLatestImageUrl(int cameraId);
}
有一个实现这个契约的类叫做StopMotion.Business.WCFService.RestCameraWs
. 然后我.svc
在我的 web 项目中添加了一个带有以下标记的文件。
<%@ ServiceHost Service="StopMotion.Business.WCFService.RestCameraWsBase"%>
当我导航到此服务 url 时,它会显示服务主页和指向 wsdl 定义的链接。但是,当我在web.config
文件中添加配置以配置此服务时,webHttpBinding
我从 IIS express 收到以下错误页面。
首先,我认为我在配置方面做错了。后来我删除了配置,只是在 svc 文件中更改了工厂,例如
<%@ ServiceHost Factory="System.ServiceModel.Activation.WebServiceHostFactory" Service="StopMotion.Business.WCFService.RestCameraWsBase"%>
WebServiceHostFactory
据说webHttpBinding
默认使用,我们不需要在配置中添加它,除非我们需要更多的东西。但是更改工厂也会导致 IIS Express 上出现相同的错误页面。
有什么想法吗?