1. 程式人生 > >c#webservice 分析器錯誤資訊: 未能建立型別“Service1”

c#webservice 分析器錯誤資訊: 未能建立型別“Service1”

說明: 在分析向此請求提供服務所需資源時出錯。請檢查下列特定分析錯誤詳細資訊並適當地修改原始檔。 

分析器錯誤訊息: 未能建立型別“Proj_WSExps.Service1”。

源錯誤: 

行 1: <%@ WebService Language="C#" CodeBehind="InsertInfo.asmx.cs" Class="Proj_WSExps.Service1" %>

“/”應用程式中的伺服器錯誤。 分析器錯誤

想了下,可能是改名的時候沒改完。

解決方法:修改檔案.asmx檔案(右擊--檢視標記;如果在vs環境下雙擊開啟的是.cs檔案)

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

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

搞定!具體參看了下文:

webservice.就概念上來說,可能比較複雜,不過我們可以有個巨集觀的瞭解:webservice就是個對外的介面,裡面有 函式可供外部客戶呼叫(注意:裡面同樣有客戶不可呼叫的函式)。假若我們是服務端,我們寫好了個webservice,然後把它給了客戶(同時我們給了他們呼叫規則),客戶就可以在從服務端獲取資訊時處於一個相對透明的狀態。即使客戶不瞭解(也不需要)其過程,他們只獲取資料。

  webservice傳遞的資料只能是序列化的資料,典型的就是xml資料。

下面以一個簡單例子為例:

(一)新建——-專案---Visual C#---web---ASP.NET Web 服務應用程式,命名為TestWebService

此時的目錄結構如圖所示:

c#webservice的簡單示例

我們修改Service1.asmx的名字為:MyService.asmx

同時修改檔案中的class名   

public class MyService: System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
    }

同時修改檔案MyService.asmx(右擊--檢視標記;如果在vs環境下雙擊開啟的是.cs檔案)

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

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

(二)重新生成專案,右擊MyService.asmx,選擇“在瀏覽器中檢視”,即可檢查本專案是否有語法錯誤

(三)在MyService.asmx新增指定方法

using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;

namespace TestWebService
{
    /// <summary>
    /// Service1 的摘要說明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ToolboxItem(false)]
    public class MyService: System.Web.Services.WebService
    {

        [WebMethod]//必須要有的,為了說明,其下是一個方法,每一個方法前面都需要有。
        public string getName()
        {
            return "Hope";
        }

        [WebMethod]
        public string getAge()
        {
            return "25";
        }

    }
}

重新生成專案,右擊MyService.asmx,選擇“在瀏覽器中檢視”,效果如下:

c#webservice的簡單示例

(四)釋出在外網上

這裡我是在本機上測試的,所以沒有必要釋出。如果要釋出到外網上,我們可以通過:

把bin檔案下的檔案以及與bin(包括.dll和.pdb檔案)同級目錄的asmx檔案上傳到外網即可。

(五)使用web service介面。

新建一個普通的windows應用程式,右擊,新增web引用----

如圖:

c#webservice的簡單示例

改一下web引用名為:HopeWebService如圖:

c#webservice的簡單示例

此時,我們可以使用webservice中的方法了。通過HopeWebService我們可以訪問其中的兩個方法。

(六)使用方法:

            HopeWebService.MyService obj = new HopeWebService.MyService();
            MessageBox.Show("name is:" + obj.getName()+";age is:" + obj.getAge());