2015-10-16 107 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

非常感谢您的帮助 –