从经典ASP调用WCF服务

从经典ASP调用WCF服务,wcf,asp-classic,Wcf,Asp Classic,从classic ASP调用WCF服务中的方法时遇到问题。以下是服务和配置的代码: 服务 [ServiceContract(Namespace = "http://Plumtree.dartKW.PdfGenerator.Web")] public interface IPdfGeneratorService { [OperationContract] String GeneratePdf(String xml); } public class PdfGeneratorServ

从classic ASP调用WCF服务中的方法时遇到问题。以下是服务和配置的代码:

服务

[ServiceContract(Namespace = "http://Plumtree.dartKW.PdfGenerator.Web")]
public interface IPdfGeneratorService
{
    [OperationContract]
    String GeneratePdf(String xml);
}

public class PdfGeneratorService : IPdfGeneratorService
{
    #region IPdfGeneratorService Members

    public String GeneratePdf(String xml)
    {
        return "hello";
    }

    #endregion
}
配置

<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding name="BasicHttpBinding_PdfGenerator"
               maxBufferSize="2147483647"
               maxReceivedMessageSize="2147483647"
               maxBufferPoolSize="2147483647"
               transferMode="Buffered">
        <readerQuotas
          maxArrayLength="2147483647"
          maxStringContentLength="2147483647"
          maxBytesPerRead="2147483647"
          maxNameTableCharCount="2147483647"
          maxDepth="32" />
      </binding>
    </basicHttpBinding>
  </bindings>
  <services>
    <service behaviorConfiguration="serviceBehavior"
             name="Plumtree.dartKW.PdfGenerator.Web.PdfGeneratorService">
      <endpoint binding="basicHttpBinding"
                bindingName="BasicHttpBinding_PdfGenerator"
                contract="Plumtree.dartKW.PdfGenerator.Web.IPdfGeneratorService" />
      <endpoint address="mex"
                binding="mexHttpBinding"
                contract="IMetadataExchange" />
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="serviceBehavior">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
每当我尝试此操作时,都会出现以下错误:

System.ServiceModel错误“800401e4”

协定没有支持指定绑定的终结点

我尝试在名字对象中传递绑定配置名称
BasicHttpBinding\u PdfGenerator
,而不是
BasicHttpBinding
,但我得到了相同的错误。我在网上也找不到这个错误的其他例子


任何帮助都将不胜感激

您可以使用JavaScript轻松完成。下面是一些嵌入在简单HTML页面中的JavaScript的副本,我将其提供给我的未来WCF web服务用户

困难的部分可能是弄清楚WCF服务在请求中期望什么。如果您可以访问WCF服务代码,那么很容易理解。另一种方法是使用Fiddler捕获在客户端和wcf主机之间发送的成功消息。或者WSDL,如果可以生成的话

祝你好运

function Ping() {             
//set up varable
var sContent;
// 'Content-Type: text/xml \r\n ' +
// 'Host: localhost:8085 \r\n \r\n  ';
sContent=  "<xml>Your message matching the web service's data or message contract</xml>";

var xmlhttp =  new XMLHttpRequest();
xmlhttp.open('POST', Demo.URL.value, true);  
xmlhttp.onreadystatechange = function() {
//this section acts as a listener, waiting for response from host
if (xmlhttp.readyState == 4||xmlhttp.readyState == 0) {
    //alert("Ready state: " + xmlhttp.readyState.toString());
    if (xmlhttp.status == 200) {
        //alert("good");
        Demo.pingresponse.value = "Response: " +xmlhttp.responseText;
    }
    if (xmlhttp.status !=200){
        //alert("bad");
        Demo.pingresponse.value = "Error: " +xmlhttp.status.toString() +"  response text:  " +xmlhttp.responseText;
    }
} else {
    //alert("readystate bad");
}
 }
 //send request    

xmlhttp.setRequestHeader("POST http:localhost:8085/HostInterface/HostConnect HTTP/1.1"); 
xmlhttp.setRequestHeader("VsDebuggerCausalityData",""); 
xmlhttp.setRequestHeader   ("SOAPAction","\"http://somestuff\""); 
xmlhttp.setRequestHeader("Host","localhost:8085"); 
xmlhttp.setRequestHeader("Expect","100-continue"); 
xmlhttp.setRequestHeader("Accept-Encoding","gzip, deflate"); 
xmlhttp.setRequestHeader("Connection","Keep-Alive"); 
xmlhttp.setRequestHeader("Content-Length","639");                   
xmlhttp.setRequestHeader("Content-type", "text/xml; charset=utf-8"); 
xmlhttp.send(sContent);                  
}
函数Ping(){
//设置变量
var内容;
//'内容类型:text/xml\r\n'+
//'主机:本地主机:8085\r\n\r\n';
sContent=“与web服务的数据或消息契约匹配的消息”;
var xmlhttp=newxmlhttprequest();
open('POST',Demo.URL.value,true);
xmlhttp.onreadystatechange=函数(){
//此部分充当侦听器,等待主机的响应
if(xmlhttp.readyState==4 | | xmlhttp.readyState==0){
//警报(“就绪状态:+xmlhttp.readyState.toString());
if(xmlhttp.status==200){
//警惕(“良好”);
Demo.pingresponse.value=“Response:+xmlhttp.responseText;
}
如果(xmlhttp.status!=200){
//警惕(“坏”);
Demo.pingresponse.value=“错误:”+xmlhttp.status.toString()+“响应文本:”+xmlhttp.responseText;
}
}否则{
//警报(“readystate坏”);
}
}
//发送请求
setRequestHeader(“POST http:localhost:8085/HostInterface/HostConnect http/1.1”);
setRequestHeader(“VsDebuggerCausalityData”,”);
xmlhttp.setRequestHeader(“SOAPAction”,“\”http://somestuff\""); 
setRequestHeader(“主机”,“本地主机:8085”);
setRequestHeader(“Expect”、“100 continue”);
setRequestHeader(“接受编码”、“gzip、deflate”);
setRequestHeader(“连接”,“保持活动”);
setRequestHeader(“内容长度”,“639”);
setRequestHeader(“内容类型”,“text/xml;charset=utf-8”);
xmlhttp.send(scocontent);
}

感谢您的回复。根据无数的在线演示,我已经阅读了我的原始代码。我正在构建的服务或名字对象的配置存在问题。有很多人在做我想做的事情,不幸的是,似乎没有人遇到过和我一样的错误!非常令人沮丧。。我想如果你不能让你的ASP版本工作,你可以试试我正在做的。它很容易插入任何HTML/ASP类型的构造中。
function Ping() {             
//set up varable
var sContent;
// 'Content-Type: text/xml \r\n ' +
// 'Host: localhost:8085 \r\n \r\n  ';
sContent=  "<xml>Your message matching the web service's data or message contract</xml>";

var xmlhttp =  new XMLHttpRequest();
xmlhttp.open('POST', Demo.URL.value, true);  
xmlhttp.onreadystatechange = function() {
//this section acts as a listener, waiting for response from host
if (xmlhttp.readyState == 4||xmlhttp.readyState == 0) {
    //alert("Ready state: " + xmlhttp.readyState.toString());
    if (xmlhttp.status == 200) {
        //alert("good");
        Demo.pingresponse.value = "Response: " +xmlhttp.responseText;
    }
    if (xmlhttp.status !=200){
        //alert("bad");
        Demo.pingresponse.value = "Error: " +xmlhttp.status.toString() +"  response text:  " +xmlhttp.responseText;
    }
} else {
    //alert("readystate bad");
}
 }
 //send request    

xmlhttp.setRequestHeader("POST http:localhost:8085/HostInterface/HostConnect HTTP/1.1"); 
xmlhttp.setRequestHeader("VsDebuggerCausalityData",""); 
xmlhttp.setRequestHeader   ("SOAPAction","\"http://somestuff\""); 
xmlhttp.setRequestHeader("Host","localhost:8085"); 
xmlhttp.setRequestHeader("Expect","100-continue"); 
xmlhttp.setRequestHeader("Accept-Encoding","gzip, deflate"); 
xmlhttp.setRequestHeader("Connection","Keep-Alive"); 
xmlhttp.setRequestHeader("Content-Length","639");                   
xmlhttp.setRequestHeader("Content-type", "text/xml; charset=utf-8"); 
xmlhttp.send(sContent);                  
}