我們的網站保持與VS2003。我們將我們的解決方案轉換爲VS2010 - 這是一個Web應用程序項目。它有我們希望轉換爲WCF分兩個階段,第一是保留通過AJAX寫回的XML文檔到客戶端...的ASMX文件的功能,然後學習如何構建多個Web服務文件(.asmx文件結尾)支持AJAX的WCF服務可以做同樣的事情。遷移Web服務(VS2003)到WCF(VS2010)
我們已經研究了「無法創建類型xxx'錯誤和意見各不相同。我們確信(!!)擁有一個App_Code文件夾並不是什麼區別,並且我們正確地命名了我們的命名空間和類,並且我們已經正確地裝飾了Web服務代碼,並且我們能夠使用ASP.Net 2.0來激活這些服務,並且我們已經在IIS中正確設置了應用程序級別......並且我們仍然無法克服這個錯誤。
這是我們的ASMX代碼(我們創建了ScriptManager控件測試頁,嘗試打這個Web方法,但我們從來沒有得到過建立服務)。你當然不需要費心與實際的數據庫拉,但是我離開了他們,無論如何:
Imports System
Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Web.Script.Services
Imports System.ComponentModel
Imports System.Data.SqlClient
Imports System.Text
Imports System.Uri
Imports System.Xml
Imports System.IO
<WebService([Namespace]:="nsCarousel", Description:="Carousel Web Service Methods")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<System.Web.Script.Services.ScriptService()> _
Public Class Carousel
Inherits WebService
<WebMethod(Description:="Get Dealer Info")> _
Public Function GetDealerInfo(ByVal DID%) As String
Dim s$, sql$, sRequest$, sRequestPathQuery$, sDID$, sAJAX$, sReturn$, sIP$, sWebSite$, sErr$, sDealerSearch$
Dim sXML$, sXMLDealerResults$, sXMLPath$
Dim sUserName$, sGeneralDesc$, sStatusText$
Dim bPost As Boolean
Dim bHaveData As Boolean
Dim ds As DataSet
Dim dasql As SqlDataAdapter
Dim sqldr As SqlDataReader
Dim sqlConn As SqlConnection
Dim sqlCmd As SqlCommand
Dim xdoc As New XmlDocument
Dim xnode As XmlNode
Dim xrefnode As XmlNode
Dim xnewnode As XmlElement
Try
'/ need test of sRequest for reference and use in test just below
bPost = False
sDID = Convert.ToString(DID)
sGeneralDesc = "Dealer Pull"
sqlConn = New SqlConnection(ConfigurationSettings.AppSettings("ConnectionStringLong"))
sqlConn.Open()
'/ new sp to preserve nodes, even when fields are null
'/ get results for individual dealer
sql = "insert into junk(entrydate, sql_stmts) select GetDate(), '" & sDID & "';"
sqlCmd = New SqlCommand(sql, sqlConn)
sqlCmd.ExecuteNonQuery()
sqlCmd.Dispose()
sql = "Select_DRPROByDID_xml " & sDID
sqlCmd = New SqlCommand(sql, sqlConn)
sqldr = sqlCmd.ExecuteReader()
'/ quick test if have data
bHaveData = False
Do While sqldr.Read
If Not (IsDBNull(sqldr("DNum"))) Then
bHaveData = True
End If
Exit Do
Loop
sqldr.Close()
sqldr = Nothing
sqlCmd.Dispose()
sqlCmd = Nothing
'/ s will include a node for NewDataSet -> remove and add nodes for msg based on status
'/ and DealerError
If bHaveData Then
dasql = New SqlDataAdapter(sql, sqlConn)
ds = New DataSet
dasql.Fill(ds)
s = ds.GetXml
sXMLDealerResults = s
dasql.Dispose()
ds.Clear()
dasql = Nothing
ds = Nothing
'/ query the XML doc
xdoc.LoadXml(s)
xnode = xdoc.SelectSingleNode("/NewDataSet/Table")
If (xnode.HasChildNodes) Then
If (sDID.Length > 0) Then
sStatusText = xdoc.GetElementsByTagName("DRStat").Item(0).InnerText
Select Case sStatusText
Case "A"
'/ test next when opportunity exists
'/ set current node at Table
'sXMLPath = "/NewDataSet/Table"
'/ set Table as the current node
'xrefnode = xdoc.SelectSingleNode(sXMLPath)
'xnewnode = xdoc.CreateElement("DealerMsg")
'sStatusText = "Active dealer found."
'xdoc.InsertAfter(xnewnode, xrefnode)
sXMLDealerResults = sXMLDealerResults.Replace("<Table>", "<Table><DealerMsg>Active dealer found.</DealerMsg>")
Case "C"
sXMLDealerResults = sXMLDealerResults.Replace("<Table>", "<Table><DealerMsg>Dealer has been cancelled.</DealerMsg>")
Case "H"
sXMLDealerResults = sXMLDealerResults.Replace("<Table>", "<Table><DealerMsg>Dealer is on hold.</DealerMsg>")
Case Else
sXMLDealerResults = sXMLDealerResults.Replace("<Table>", "<Table><DealerMsg>Dealer status is invalid.</DealerMsg>")
End Select
sXMLDealerResults = sXMLDealerResults.Replace("<Table>", "<Table><DealerError>1</DealerError>")
Else
'/ do nothing
End If
Else
sXMLDealerResults = sXMLDealerResults.Replace("<Table>", "<Table><DealerError>0</DealerError><DealerMsg>Dealer not found.</DealerMsg>")
End If
Else
sXMLDealerResults = "<Table><DealerError>0</DealerError><DealerMsg>Dealer not found.</DealerMsg></Table>"
End If
sXMLDealerResults = sXMLDealerResults.Replace("<NewDataSet>", "")
sXMLDealerResults = sXMLDealerResults.Replace("</NewDataSet>", "")
If (sDID.Length > 0) Then
sXMLDealerResults = sXMLDealerResults.Replace("<Table>", "")
sXMLDealerResults = sXMLDealerResults.Replace("</Table>", "")
Else
sXMLDealerResults = sXMLDealerResults.Replace("<Table>", "<Dealer>")
sXMLDealerResults = sXMLDealerResults.Replace("</Table>", "</Dealer>")
End If
sXML = "<?xml version=""1.0"" ?><DealerFetch>" + sXMLDealerResults.Trim + "</DealerFetch>"
'If sReturn.Trim.Length = 0 Then
' Response.ContentType = "text/xml"
' Response.Write(sXML)
'End If
sqlConn.Close()
sqlConn = Nothing
Return sXML
Catch exp As Exception
sErr = sErr & " " & exp.Message.ToString
End Try
End Function
End Class
任何幫助,將不勝感激。也許這是一件很明顯的事情,很快就會出現在這裏的某個人,但它肯定會讓我們煩惱!如果您需要更多信息或代碼,請告訴我們。
我希望你沒有轉化這些是網絡現場「項目」。繼續使用Web應用程序項目。網站是非常有限的,幾乎總是一個壞主意。 –