认为我可能只是在这里做错了什么,但我一直在坚持和寻找一两天,但我无法弄清楚这一点。
我的解决方案中有一个可重用的 WCF 项目,旁边还有一个特定于解决方案的 MVC.NET 项目。
解决方案: -
MVC.NET 项目
类库
- WCF 项目
WCF 测试客户端获得预期的结果。但是,当尝试通过 MVC 项目中设置的端点调用 WCF 服务时,我遇到了一些问题。如果用户没有传递任何参数,它工作正常。但是,当尝试将参数传递给 web 服务时,.svc 文件中似乎没有可用的参数。
我的端点代码:
public override void RegisterArea( AreaRegistrationContext context ) {
context.Routes.Add( new ServiceRoute( "Api/SOAP/Log", new ServiceHostFactory(), typeof( Log ) ) );
context.Routes.Add( new ServiceRoute( "Api/SOAP/Report", new ServiceHostFactory(), typeof( Report ) ) );
context.Routes.Add( new ServiceRoute( "Api/Rest/Log", new WebServiceHostFactory(), typeof( Log ) ) );
context.Routes.Add( new ServiceRoute( "Api/Rest/Report", new WebServiceHostFactory(), typeof( Report ) ) );
}
服务合同:
[ServiceContract]
public interface ILog {
[OperationContract]
[WebInvoke( Method = "POST", UriTemplate = "Search?systemName={systemName}&searchType={searchType}&query={query}&resultCount={resultCount}&ipAddress={ipAddress}")]
SearchResult Search( string systemName, string searchType, string query, string resultCount, string ipAddress );
}
还有一个 svc 服务:
公共类日志:ILog {
public void Search( string systemName, string searchType, string query, string resultCount, string ipAddress ) {
LogSearch Manager = new LogSearch();
Manager.ProcessWcfRequest( systemName, searchType, query, resultCount, ipAddress);
}
}
这些参数显然没有通过。我还尝试在运行时检查System.Web.HttpContext.Current和WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters,这些也不包含参数。
我正在使用以下 AJAX 请求发出请求:
jQuery.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/Api/Rest/Log/Search",
dataType: "json",
data: { systemName : "test", searchType : "test", query : "test", resultCount : "test", ipAddress : "test" },
success: function (msg) {
console.log(msg);
}
});
所以要重新迭代,请求正在通过,我可以在我的服务中打断点,这意味着任何不需要参数的服务方法都可以,但是对于那些确实需要参数的服务方法,没有一个通过。
谁能看到我哪里出错了?