分析器错误:无法创建类型

时间:2011-06-03 13:42:06

标签: c# .net asp.net web-services

我创建了webservice并将其发布在本地计算机上。然后我把它上传到服务器上。

现在,当我尝试访问webservice时,它会出现以下错误:

Parser Error Message: Could not create type 'webservice.myservice'

Source Error: Line 1: <%@ WebService Language="C#" CodeBehind="myservice.asmx.cs" Class="webservice.myservice" %>

我尝试了This链接但无法解决我的问题。

我该怎么办?

5 个答案:

答案 0 :(得分:49)

Dunno如果这是从昏暗而遥远的过去拖出来的东西......但是我有这个问题..修好了..所以我想我会分享

在Visual Studio中创建Web服务时(我使用的是2010,但我想其他人也一样),它会创建一个名为Service1.asmx的文件

您很想将其重命名为MyService.asmx(或其他)

然后你会看到内部并看到

public class Service1: System.Web.Services.WebService

你将改为

public class MyService: System.Web.Services.WebService

然后当你尝试运行它时会出现错误

无法创建“MyProject.MyService”类型

因为它仍然认为该类被称为Service1 ..

如果您右键单击.asmx文件并选择查看标记,您会看到它仍然显示

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

将其更改为

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

保存..试试吧..

为我工作..

答案 1 :(得分:8)

我有同样的问题并且长时间寻找它!

我尝试了很多方面,包括以下内容:

这些都不适合我。经过一些搜索,测试和诅咒,我终于找到了问题:应用程序(webservice)被错误托管。

让我用一点背景解释一下:

我有一个包含两个解决方案的项目:一个解决方案是我制作的网站(html,javascript等),另一个解决方案包含一个包含业务逻辑,数据库模型和web服务的文件夹。显然,webservices文件夹包含我的.asmx文件和代码隐藏。

  • 项目
    • 数据核心
      • 数据库模型
      • 商业逻辑
      • WEBSERVICES
        • myWebservice.asmx
    • 网站

我通过以下方式主持这些:

  • 我的网站作为新网站托管,网站文件夹为根文件夹
  • 我的网络服务我在我的网站上托管了一个应用程序,其中webservices文件夹为root

更直观:

  • IIS 7
    • 我的网站=&gt;指向“网站”文件夹
      • Webservices Application =&gt;指向Data Core中的“Webservices”文件夹

这导致以下网址“http://website/webservices/myWebservice.asmx”,这给了我“无法创建类型”错误。

现在,在玩了一下后,我尝试托管我的webservice应用程序,从数据核心开始,而不是webservice文件夹。

目视:

  • IIS 7
    • 我的网站=&gt;指向“网站”文件夹
      • Webservices Application =&gt;指向“Data Core”文件夹。

显然使用与以前相同的URL会给我一个“找不到文件”错误。但是,使用以下网址“http://website/webservices/webservices/myWebservice.asmx”,我终于获得了正常工作网络服务页面!

小网址分类:

  • http:// website / =&gt;我的网站来自“网站”文件夹
    • webservices / =&gt;相当于“Data Core”文件夹
      • webservices / =&gt; “Data Core”文件夹中的“webservices”文件夹
        • myWebservice.asmx =&gt; webservice文件位于“webservices”文件夹中的“Data Core”文件夹

我认为因为我直接从Data Core中的“webservices”文件夹托管我的webservices,服务器无法找到webservices的编译DLL(它位于“bin”文件夹中),因为我是托管在更深层次。

更改配置并从“Data Core”文件夹托管Web服务后,IIS服务器可以“看到”bin文件夹并成功托管Web服务。使用正确的URL时,^ _ ^

我希望这很清楚并帮助你解决问题!

答案 2 :(得分:4)

另一件可能导致问题的事情。是不是为项目创建了一个应用程序抛出IIS本身。

  

开始 - &gt;搜索IIS

打开它!!

右键单击默认网站或您计划将服务发布到其上的网站。

添加应用 ... 输入别名 ex。 “MyWebService”... 选择物理路径。在我的情况下是C:\inetpub\wwwroot\MyWebService这是我的默认网站路径。

然后在发布时抛出Visual Studio选择该文件夹。或者只是将代码文件复制到它。

答案 3 :(得分:0)

我很确定这只是Glenn所说的摘要,但我遇到了这个问题,因为我的应用程序是从目录结构中一个级别太高的目录创建的。

例如,我的网络服务位于SiteProject_1 / SiteProject_2 / service.asmx

最初SiteProject_1是我在IIS中转换为应用程序的内容。我能够通过在IIS中删除该应用程序并将SiteProject_2放入应用程序来解决该问题。

答案 4 :(得分:0)

今天早上我遇到了这个问题,谷歌将我降落在这里,但是这些答案对我都不起作用。但是我确实找出了问题所在-至少就我而言-所以我想分享一下,以防它对其他人有所帮助。

我有一个Web服务在与我正在处理的应用程序其他部分的解决方案中可以正常工作数月。昨天,我需要在发布分支中修复某些问题,因此我在另一个目录中的解决方案副本上打开了Visual Studio。 Visual Studio决定提供帮助,并以静默方式将IIS中的所有虚拟目录重新映射到程序在release文件夹中的位置(如果我不愿意构建它们,则没有)。现在,当我尝试访问Web服务时,IIS指向的发布版本具有asmx但没有bin文件夹。

在我的开发解决方案中打开“ Web属性”选项卡,然后单击“创建虚拟目录”,将其重新映射到开发版本,一切再次与世隔绝。