【问题标题】:Classic ASP Consuming WCF Service through SSL with UserName Authentication经典 ASP 通过带有用户名身份验证的 SSL 使用 WCF 服务
【发布时间】:2014-12-11 21:23:55
【问题描述】:

首先我要说的是,到目前为止,我从未接触过 Classic ASP。我使用带有用户名身份验证的 basicHttpBinding 创建了一个 WCF 服务。客户说下面的代码在他在 NeoLoad 上测试时可以工作,但是当他把它放在 IIS 服务器上时,他开始收到 400 bad request 错误。我环顾四周,已经为此奋斗了 2 天,但我找不到这个问题的答案。任何帮助将不胜感激,并提前致谢。

<%
   Dim SOAPResponse, SOAPRequest, serviceUrl, strResult

serviceUrl = ""
Response.Write "Creating XML Object<br>" & vbCrLf
Dim oXmlHTTP : Set oXmlHTTP = CreateObject("MSXML2.ServerXMLHTTP")

   SOAPRequest = "<?xml version=""1.0"" encoding=""UTF-8""?>"
   SOAPRequest = SOAPRequest & "<s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:u=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"">"
    SOAPRequest = SOAPRequest & "<s:Header>"
        SOAPRequest = SOAPRequest & "<o:Security s:mustUnderstand=""1"" xmlns:o=""http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"">"
            SOAPRequest = SOAPRequest & "<u:Timestamp u:Id=""_0"">"
                SOAPRequest = SOAPRequest & "<u:Created>2014-12-04T20:13:37.744Z</u:Created>"
                SOAPRequest = SOAPRequest & "<u:Expires>2014-12-04T20:18:37.744Z</u:Expires>"
            SOAPRequest = SOAPRequest & "</u:Timestamp>"
            SOAPRequest = SOAPRequest & "<o:UsernameToken u:Id=""UsernameToken-5"">"
                SOAPRequest = SOAPRequest & "<o:Username>"
                    SOAPRequest = SOAPRequest & ""
                SOAPRequest = SOAPRequest & "</o:Username>"
                SOAPRequest = SOAPRequest & "<o:Password>"
                    SOAPRequest = SOAPRequest & ""
                SOAPRequest = SOAPRequest & "</o:Password>"
            SOAPRequest = SOAPRequest & "</o:UsernameToken>"
        SOAPRequest = SOAPRequest & "</o:Security>"
        SOAPRequest = SOAPRequest & "<To s:mustUnderstand=""1"" xmlns=""http://schemas.microsoft.com/ws/2005/05/addressing/none"">""""</To>"
        SOAPRequest = SOAPRequest & "<Action s:mustUnderstand=""1"" xmlns=""http://schemas.microsoft.com/ws/2005/05/addressing/none"">""http://tempuri.org/ISLAServiceSandbox/SaveEntry""</Action>"
    SOAPRequest = SOAPRequest & "</s:Header>"
    SOAPRequest = SOAPRequest & "<s:Body>"
        SOAPRequest = SOAPRequest & "<SaveEntry xmlns=""http://tempuri.org/"">"
            SOAPRequest = SOAPRequest & "<request xmlns:a=""http://schemas.datacontract.org/2004/07/IDOI.Ams.Taxes.Web.Domain"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance"">"

            SOAPRequest = SOAPRequest & "</request>"
        SOAPRequest = SOAPRequest & "</SaveEntry>"
        SOAPRequest = SOAPRequest & "</s:Body>"
    SOAPRequest = SOAPRequest & "/s:Envelope>"

oXmlHTTP.Open "POST", serviceUrl, False 

oXmlHTTP.setRequestHeader "Content-Type", "text/xml; charset=utf-8" 
oXmlHTTP.setRequestHeader "Content-Length", Len(SOAPRequest)
oXmlHTTP.setRequestHeader "SOAPAction", "http://tempuri.org//SaveEntry" 

'send the request and capture the result
Call oXmlHTTP.send(SOAPRequest)
Response.Write "Status: " & oXmlHTTP.Status & " - " & oXmlHTTP.statusText & "<br>" &    vbCrLf
Response.Write strResult
%>

<%= strResult %>

【问题讨论】:

    标签: .net wcf iis-7 asp-classic


    【解决方案1】:

    好的,所以编写此代码的顾问弄明白了。原来这只是一些放错位置的代码。而不是

    <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope"
    

    应该是的

    <s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/"
    

    感谢任何花时间查看此内容的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-27
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      • 2014-11-09
      • 1970-01-01
      • 2012-01-28
      • 1970-01-01
      相关资源
      最近更新 更多