2015-10-16 81 views
0

我想在C#中使用VS2015構建一個簡單的Web服務,並託管在Windows Server 2012R2上。IIS:解析器錯誤消息:無法創建類型

我編寫了代碼,它在Visual Studio調試器中託管時可以正常工作。調試器將啓動IE並給我用戶界面來測試我的代碼中的簡單方法。我可以輸入攝氏溫度並恢復Farentheit的溫度。所以我的理解是我的代碼本身正在工作。

然而,當我發表我的項目,並試圖將其加載到IE中,我得到:

Server Error in '/' Application. 

Parser Error 
    Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. 

Parser Error Message: Could not create type 'TestAutomation.AutomationInterface'. 

Source Error: 



Line 1: <%@ WebService Language="C#" CodeBehind="~/App_Code/WebService.cs" Class="TestAutomation.AutomationInterface" %> 



Source File: /TestToolsAutomation/AutomationInterface.asmx Line: 1 


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.6.81.0 

我對將要構建出版我的項目 - >發佈Web應用程序。我選擇「文件系統」作爲我的發佈方法,並在調試配置中發佈到「C:\ inetpub \ wwwroot \ MyAppName」,而「文件發佈選項」中沒有複選框。當我發佈,我在MyAppName文件夾中的以下文件:

-AutomationInterface.asmx 
-Web.config 
\App_Code 
    WebService.cs 

最明顯的問題,我在這裏看到的是,有我的編譯的代碼不會創建.dll文件。我遠離IIS專家,但是這不是應該在用戶第一次請求該頁面時創建的嗎?

然後我重新發布並檢查了文件選項中的「發佈期間的預編譯」。當我這樣做時,會用文件「App_Code.compiled」和「App_Code.dll」文件創建一個\ bin文件夾。但是,我在瀏覽器中遇到同樣的錯誤。

因爲我的代碼在VS調試器中工作,但不是託管在IIS中時,我懷疑問題是在IIS的一面,但我不是100%確定的。

當我在IE中請求IIS頁面時,我在事件代碼:3006 事件消息:解析器錯誤已在應用程序事件日誌中得到源「ASP.NET 4.0.3.30319.0」的事件1310發生「以及顯示一堆System.Web.Compilation函數的堆棧跟蹤。

我已經在Stack Overflow和其他網站上搜索了這個錯誤,但是沒有一個建議的解決方案似乎解決了我的特殊問題。

我希望社區能夠提供任何幫助。

更新:我啓用了服務器上失敗的請求跟蹤。看起來錯誤發生在這裏:

154. view trace 
Warning 
-MODULE_SET_RESPONSE_ERROR_STATUS 


ModuleName 
ManagedPipelineHandler 

Notification 
MAP_REQUEST_HANDLER 

HttpStatus 
500 

HttpReason 
Internal Server Error 

HttpSubStatus 
0 

ErrorCode 
The operation completed successfully. 
(0x0) 

ConfigExceptionInfo 

ManagedPipelineHandler 

我缺乏完全理解IIS試圖告訴我的背景。任何提示將不勝感激。

回答

0

這裏有幾個可能的想法探索:

你看該應用程序池在IIS中來運行這些帳戶的權限?可能存在ASP.Net臨時文件,這些文件可能不是問題。

是ASP.Net註冊IIS嗎?我記得不止幾次必須在服務器上運行「aspnet_regiis -i」才能安裝ASP.Net部件,以便它將存在於IIS中。

IIS配置爲允許ASP.Net請求?在機器級別的IIS管理器中有一個「ISAPI和CGI限制」要注意。


更新:也許你可以看看應用程序池的配置,看看哪個版本的.Net它正在使用,以及是否集成或經典模式。那些將是下一個需要研究的層次。

+0

IIS_IUSRS帳戶對C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET文件具有修改,讀取和執行,寫入等權限。 在服務器管理器中,.NET擴展性3.5和4.0都被檢查。 在IIS管理器中,該應用程序的文件夾具有Handler Mappings,用於啓用* .asmx。 這是我該如何檢查這三個項目? – Nevo

+0

我會問的中間一個。使用管理員權限打開命令提示符,並在「C:\ Windows \ Microsoft.Net \ Framework \ v4.0.30319」中運行「aspnet_regiis -i」(或者最後一組數字爲要註冊2.0或4.0的框架版本) –

+0

JB,我這樣做了,aspnet_regiis告訴我「此版本的操作系統不支持此選項」,並將我引用到http://go.microsoft.com/fwlink/?LinkID=216771。 另請參閱原始帖子中的UPDATE。 – Nevo

2

經過幾個小時的努力,並做出各種設置更改,幾次卸載和重新安裝IIS後,我終於解決了這個問題。

我必須右鍵單擊我在IIS管理器中發佈我的文件的文件夾,然後選擇「轉換爲應用程序」。它現在正在工作!

+0

非常感謝您的幫助 –

相關問題