好的,这让我疯了。
我创建了一个带有四个端点的WCF服务(其中三个使用GET,另一个使用POST)。
所有三个GET端点都正常工作,但我无法让POST端点工作。
我的界面:
[ServiceContract]
public interface IFiscalCidadaoWCF
{
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetConveniosByCoordinate/{latitude}/{longitude}")]
TelaInicialEnvioViewModel GetConveniosByCoordinate(string latitude, string longitude);
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "FazerDenuncia")]
string FazerDenuncia(string model); // this is the one
[OperationContract]
[WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetConvenioById/{convenioId}")]
ConvenioEnvioViewModel GetConvenioById(string convenioId);
[OperationContract]
[WebInvoke(Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "GetDenunciaByUsuario/{usuarioId}")]
List<DenunciaEnvioViewModel> GetDenunciaByUsuario(string usuarioId);
}
我的服务实施:
public string FazerDenuncia(string model)
{
return "OK";
}
Webconfig:
<system.serviceModel>
<services>
<service name="FiscalCidadaoWCF.FiscalCidadaoWCF">
<endpoint address="../FiscalCidadaoWCF.svc" binding="webHttpBinding" contract="FiscalCidadaoWCF.IFiscalCidadaoWCF"behaviorConfiguration="webBehaviour" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="jsonBehavior">
</behavior>
<behavior name="webBehaviour">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Accept" />
</customHeaders>
</httpProtocol>
<modules runAllManagedModulesForAllRequests="true" />
<directoryBrowse enabled="true" />
</system.webServer>
我正在使用Postman和使用jQuery的客户端项目进行测试。两者都没有工作。
jQuery调用:
var data2 = "weba";
$.ajax({
type: "POST",
url: 'http://www.fiscalcidadao.site/FiscalCidadaoWCF.svc/FazerDenuncia',
data: data2,
success: function (data) {
alert('working');
},
error: function (request, status, error) {
alert('shut up');
},
});
我收到错误“服务器在处理请求时遇到错误。有关详细信息,请参阅服务器日志”。 但是,如果我尝试不带参数调用,则端点返回“Ok”。
所以我的问题是:我应该在项目中更改什么才能使POST端点工作传递参数?或者我如何找到“服务器日志”以查看正在发生的事情?