我正在尝试在已有的ASP.Net应用程序中创建一个非常简单的WCF服务。
WCF在应用程序内部托管,我想,如果操作正确,它不需要在web.config中设置绑定地址(它已经在/Pages/Login.svc)。
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
+
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
namespace CRM.Pages
{
[ServiceContract]
public interface ILogin
{
[OperationContract]
JSONLogin Log();
}
}
+
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using System.ServiceModel.Web;
namespace CRM.Pages
{
[DataContract]
public class JSONLogin
{
[DataMember]
public string ErrorMsg
{
get;
set;
}
}
public class Login : ILogin
{
[WebGet(
ResponseFormat = WebMessageFormat.Json
, UriTemplate = "Log"
)]
public JSONLogin Log()
{
return new JSONLogin()
{
ErrorMsg = "test"
};
}
}
}
当我去/Pages/Login.svc时,我得到了描述页面,但是当我到“/Pages/Login.svc/Log”时没有任何反应,代码没有运行。 我想这可能是我忘记的最后一步。
编辑:
的解决方案的
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="CRM.Pages.Login">
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="web" contract="CRM.Pages.ILogin"></endpoint>
</service>
</services>
答案 0 :(得分:1)
这是一个基于REST的服务,因此需要进行一些配置
将此添加到您的Web.config
<services>
<service name="EnterName" behaviorConfiguration="RestService" >
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="web" contract="IContract"></endpoint>
</service>
</services>
并在行为下添加端点行为以启用Web http
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
更改您的webget属性
[WebGet(
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedResponse,
UriTemplate = "/log")]