我想在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试图告诉我的背景。任何提示将不胜感激。
IIS_IUSRS帐户对C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET文件具有修改,读取和执行,写入等权限。 在服务器管理器中,.NET扩展性3.5和4.0都被检查。 在IIS管理器中,该应用程序的文件夹具有Handler Mappings,用于启用* .asmx。 这是我该如何检查这三个项目? – Nevo
我会问的中间一个。使用管理员权限打开命令提示符,并在“C:\ Windows \ Microsoft.Net \ Framework \ v4.0.30319”中运行“aspnet_regiis -i”(或者最后一组数字为要注册2.0或4.0的框架版本) –
JB,我这样做了,aspnet_regiis告诉我“此版本的操作系统不支持此选项”,并将我引用到http://go.microsoft.com/fwlink/?LinkID=216771。 另请参阅原始帖子中的UPDATE。 – Nevo