gpt4 book ai didi

c# - 找不到终结点 - WCF Web 服务

转载 作者:可可西里 更新时间:2023-11-01 07:57:29 28 4
gpt4 key购买 nike

我已经为我的 WCF 服务创建了 2 个端点。

它在 basicHttpBinding 上工作正常,但在 webHttpBinding 上会导致错误。

错误 = 未找到端点。

操作合约定义

[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
ResponseFormat = WebMessageFormat.Json)]
VINDescription CallADSWebMethod(string vin, string styleID);

web.config:

<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="Description7aBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://services.chromedata.com:80/Description/7a"
binding="basicHttpBinding"
bindingConfiguration="Description7aBinding"
contract="description7a.Description7aPortType"
name="Description7aPort"/>
</client>
<services>
<service behaviorConfiguration="asmx" name="ADSChromeVINDecoder.Service">
<endpoint name="httpEndPoint"
address=""
binding="basicHttpBinding"
contract="ADSChromeVINDecoder.IService"/>
<endpoint name="webEndPoint"
address="json"
behaviorConfiguration="web"
binding="webHttpBinding"
contract="ADSChromeVINDecoder.IService"/>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
<enableWebScript/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="asmx">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
</system.serviceModel>

请建议我如何解决这个问题?

最佳答案

我已经创建了一个与您所拥有的服务类似的服务:

 [ServiceContract]
public interface IService
{
[OperationContract]
[WebInvoke(UriTemplate="/CallADSWebMethod", Method="POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json)]
string CallADSWebMethod(string vin, string styleID);
}

我添加的重要内容是 UriTemplate 部分,它告诉服务调用应该是什么样子。然后我将此服务实现为:

public class Service : IService
{
public string CallADSWebMethod(string vin, string styleID)
{
return vin + styleID;
}
}

在我的 web.config 中我有以下内容:

<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="Description7aBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None" realm=""/>
<message clientCredentialType="UserName" algorithmSuite="Default"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="asmx" name="WebApplication1.Service">
<endpoint address="basic" binding="basicHttpBinding" name="httpEndPoint" contract="WebApplication1.IService"/>
<endpoint address="json" binding="webHttpBinding" behaviorConfiguration="webBehavior" name="webEndPoint" contract="WebApplication1.IService"/>
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="asmx">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>

然后我创建了一个简单的页面,看起来像这样使用 jQuery 调用此服务:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#Ok").click(function () {
var jData = {};
jData.vin = "one";
jData.styleID = "test";
$.ajax({
type: "POST",
url: "/Service.svc/json/CallADSWebMethod",
data: JSON.stringify(jData),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert(msg);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(textStatus);
}
});
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<input type="button" id="Ok" name="Ok" value="Ok" />
</div>
</form>
</body>
</html>

这会产生一个带有文本 onetest 的警报。希望能给些指导。

关于c# - 找不到终结点 - WCF Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12897620/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com