2011-06-03 29 views
31

我已經創建了web服務並將其發佈到本地計算機上。然後我將它上傳到服務器上。解析器錯誤:無法創建類型

現在,當我試圖訪問web服務它給了以下錯誤:

Parser Error Message: Could not create type 'webservice.myservice'

Source Error: Line 1: <%@ WebService Language="C#" CodeBehind="myservice.asmx.cs" Class="webservice.myservice" %>

我試圖This鏈接,但未能解決我的問題。

我該怎麼辦?

+0

你上傳了帶有asmx頁面的dll或.cs/vb頁面嗎?看起來好像你錯過了課後的代碼? – Bex 2011-06-03 13:51:06

+0

是的,我上傳了zip格式的所有文件。並在服務器上解壓縮。 – Meghan 2011-06-03 13:57:26

+0

據我所知,錯誤字面意思是頁面找不到代碼。網站的其他部分是否有效?如果有的話? 一般來說,如果它在本地運行良好,那麼一些東西還沒有被正確複製。 – Bex 2011-06-03 14:11:23

回答

39

說不上來,如果這是從朦朧和遙遠的過去,拖了..東西,但我有這個問題..固定它..所以我想我會分享

當您在Visual Studio中的Web服務(我使用的是2010,但我想像這是對他人的相同),它創建了一個名爲Service1.asmx

你會被誘惑去其重命名爲MyService.asmx(或其他)

然後你將看到文件裏面看到這條線

public class Service1: System.Web.Services.WebService 

它當您嘗試運行它,你會改變

public class MyService: System.Web.Services.WebService 

,那麼你得到的錯誤

未能創建類型「MyProject.MyService」

因爲這一切仍然認爲該類稱爲Service1 ..

如果您右鍵單擊.asmx文件並選擇view mar KUP你會看到它還是說

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="MyProject.Service1" %> 

將其更改爲

<%@ WebService Language="C#" CodeBehind="MyService.asmx.cs" Class="MyProject.MyService" %> 

保存它..試試吧..

爲我工作..

+0

謝謝,我以爲我是在正確的道路上解決這個問題,這個答案證實了這一點。但是,它的MyProject.MyService不是MyNamespace.MyService。我想我必須是另一位過去的訪問者,因爲「這個問題已關閉,因爲它不可能幫助未來的訪問者」。胡說。 – capn 2012-07-12 15:56:11

+0

這絕對幫了我。我想在進入WCF之前瞭解Web服務。 – TheSilverBullet 2012-09-21 11:08:41

+3

我遇到了這個問題,並且遇到了另一個問題,因此這裏是其他受挫者的解決方案。 如果更改構建目標文件夾,它將停止工作。您必須將構建的輸出複製回。\ bin \ – TCS 2013-03-31 07:55:34

8

我有同樣的問題,並尋找它很長一段時間!

我嘗試了很多東西,包括以下內容:

這些都不爲我工作。經過一番搜索,測試和詛咒後,我終於發現問題:應用程序(web服務)託管不正確。

讓我有一點點的背景說明:

我必須包含兩個解決方案的項目:一個解決方案是,我做了(HTML,JavaScript的,等等)的網站外,其他的解決方案包含一個文件夾與業務邏輯,數據庫模型和Web服務。很明顯,webservices文件夾包含我的.asmx文件,併爲他們隱藏了代碼。

  • 項目
    • 數據核心
      • 數據庫模型
      • 業務邏輯
      • WEBSERVICES
        • myWebservice.asmx
    • 網站

我在下面的方式承載這些:

  • 我的網站託管與該網站的文件夾的根文件夾中的新網站
  • 我webservices我作爲應用程序託管在我的網站上,以webservices文件夾作爲根

更多視覺:

  • IIS 7
    • 我的主頁=>在 「網站」 文件夾指點
      • WEBSERVICES應用=>指向在數據核心的 「web服務」 的文件夾

這導致以下url「http://website/webservices/myWebservice.asmx」,它給了我「無法創建類型」錯誤。

現在,玩了一下後,我嘗試託管我的web服務應用程序,以數據核心爲根,而不是web服務文件夾。

目視:

  • IIS 7
    • 我的主頁=>在 「網站」 文件夾
      • WEBSERVICES應用指點=>在 「數據核心」 文件夾中指向。

顯然使用相同的URL之前會給我一個「找不到文件」的錯誤。但是,使用以下網址「http://website/webservices/webservices/myWebservice.asmx」,我終於得到了我的工作 webservices頁面!

一個小鏈接故障:

  • 的http://網站/ =>我的網站從 「網站」 文件夾
    • 的WebServices/=>等同於 「數據核心」 文件夾
      • web服務/ =>在 「數據核心」 的文件夾
        • myWebservice.asmx =>的瓦特的 「web服務」 的文件夾在「Web服務」文件夾ebservice文件,在「數據核心」文件夾

我假設,因爲我是直接從「Web服務」主辦我的web服務文件夾中的數據核心,即服務器無法找到編譯的DLL的Web服務(駐留在「bin」文件夾),因爲我在更深層次的託管。

在更改配置並從「Data Core」文件夾託管Web服務後,IIS服務器可以「查看」bin文件夾併成功託管Web服務。當使用正確的網址是^ _^

我希望這是明確的,並幫助您解決您的問題!

1

可能導致問題的另一件事。沒有爲項目創建應用程序拋出IIS本身。

開始 - >搜索IIS

打開它!

右鍵單擊默認網站或您計劃向其發佈服務的網站。

添加應用程序 ... 輸入別名前。 「MyWebService」... 選擇物理路徑。在我的情況下是C:\inetpub\wwwroot\MyWebService這是我的默認網站路徑。

然後,當你發佈拋出Visual Studio選擇該文件夾。或者只是將你的代碼文件複製到它。

0

我相當肯定這只是Glenn所說的內容的總結,但我遇到了這個問題,因爲我的應用程序是從目錄結構中高一級的目錄創建的。

例如,我的Web服務位於SiteProject_1/SiteProject_2/service中。asmx

原來SiteProject_1是我在IIS中轉換成應用程序的。我能夠通過在IIS中刪除該應用程序來解決該問題,並將SiteProject_2變爲應用程序。

相關問題