2010-07-05 117 views
2

的標記和代碼隱藏我的.NET Web服務文件的內容如下(幾乎VS生成的內容):.NET Web服務「無法創建類型」

Services.asmx:

<%@ WebService Language="VB" CodeBehind="Services.asmx.vb" Class="Services" %> 

Services.asmx.vb:

Imports System.Web.Services 
Imports System.Web.Services.Protocols 
Imports System.ComponentModel 

<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _ 
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _ 
<ToolboxItem(False)> _ 
Public Class Services 
    Inherits System.Web.Services.WebService 

    <WebMethod()> _ 
    Public Function HelloWorld() As String 
     Return "Hello World" 
    End Function 
End Class 

當我嘗試訪問Web服務,我得到:

分析器錯誤信息:無法創建類型「服務」

我試過在排位標記中的服務類規範與命名空間,但沒有成功。

當我將代碼隱藏在與.asmx相同的文件中時,一切正常。

+1

從項目中排除asmx文件及其代碼(右鍵單擊「從項目中排除」),添加一個新的asmx文件。它是否編譯? – 2010-07-06 00:03:56

+0

是的,它編譯。 – Hans 2010-07-06 02:15:08

回答

2

我會說這是一個與名稱空間匹配的類名有關的問題。你有沒有嘗試將服務類重命名爲其他東西?

+0

我試着重新命名這個類。我還通過VS向項目添加了一個新的「Web服務」。它將其命名爲WebService1.asmx。我沒有觸及其中的任何生成的代碼,但「http://localhost/WebService1.asmx」也會產生相同的錯誤。 – Hans 2010-07-06 02:17:55

3

因此,當我將構建配置更改爲任何CPU時,它的工作原理是因爲包含類型的.dll最終位於bin文件夾中。當構建配置設置爲x86時,.dll只在bin/x86/Debug或bin/x86/Release中結束,而IIS看起來不是這樣。似乎很傻。我錯過了什麼嗎?

1

事實上,我有兩個文件夾(x86和x64)用於兩種配置,而IIS只在主bin文件夾中查找dll。我複製了dll文件,並立即生效。

0

我有這個問題編譯的web項目。名稱全部匹配,在另一個解決方案中工作正常

注意到這是一個'網絡'項目。刪除項目並將其添加回現有項目,並返回時未被識別爲「Web」項目 - 然後編譯並運行良好。