我正在尝试使用VS2015在C#中构建一个简单的Web服务,以托管在Windows Server 2012R2上。
我已经编写了代码,并且在Visual Studio调试器中托管时它可以正常工作。调试器将启动IE并给我UI以测试我的代码中的简单方法。我可以输入摄氏温度并恢复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
我将通过Build - &gt;发布我的项目发布Web App。我选择“文件系统”作为我的发布方法,并在调试配置中发布到“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页面时,我在应用程序事件日志中得到一个带有源“ASP.NET 4.0.3.30319.0”的事件1310,其中显示“事件代码:3006 事件消息:发生了解析器错误“以及显示一堆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 :(得分:2)
经过几个小时的努力并进行各种设置更改,并多次卸载并重新安装IIS后,我终于解决了这个问题。
我必须右键单击我在IIS管理器中发布文件的文件夹,然后选择“转换为应用程序”。它现在正在运作!
答案 1 :(得分:0)
以下是一些可供探索的想法:
您是否查看了IIS中的应用程序池用于运行此帐户的权限?可能存在未生成的ASP.Net临时文件,这可能是一个问题。
ASP.Net是否在IIS注册?我已经记得多次不得不跑#34; aspnet_regiis -i&#34;在服务器上安装ASP.Net部件,以便它在IIS中出现。
IIS配置为允许ASP.Net请求吗?在机器级别的IIS管理器中,有一个&#34; ISAPI和CGI限制&#34;注意。
更新:也许您可以查看应用程序池的配置,看看它正在使用哪个.Net版本以及它是集成模式还是经典模式。这些将是下一级要检查的事情。