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

C# 分析器错误:无法创建类型,c#,.net,asp.net,web-services,C#,.net,Asp.net,Web Services,我已经创建了webservice并在本地机器上发布了它。然后我把它上传到服务器上 现在,当我尝试访问webservice时,它出现以下错误: 分析器错误消息:无法创建类型“webservice.myservice” 源错误: 第1行: 我尝试链接,但无法解决我的问题 我该怎么办呢?我不知道这是否是从遥远的过去拖累了什么,但我有这个问题。我修好了。所以我想和大家分享一下 当您在VisualStudio中创建web服务时(我使用的是2010,但我想其他人也一样),它会创建一个名为Service1.a

我已经创建了webservice并在本地机器上发布了它。然后我把它上传到服务器上

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

分析器错误消息:无法创建类型“webservice.myservice”

源错误:
第1行:

我尝试链接,但无法解决我的问题


我该怎么办呢?

我不知道这是否是从遥远的过去拖累了什么,但我有这个问题。我修好了。所以我想和大家分享一下

当您在VisualStudio中创建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" %>

保存它,尝试它


它对我起作用了。

我也有同样的问题,并且找了很长时间

我尝试了很多东西,包括:

这些都不适合我。经过一些搜索、测试和诅咒,我终于发现了问题:应用程序(webservice)的托管不正确。

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

我有一个包含两个解决方案的项目:一个解决方案是我创建的网站(html、javascript等),另一个解决方案包含一个包含业务逻辑、数据库模型和webservices的文件夹。显然,webservices文件夹包含了my.asmx文件和它们的代码

  • 计划
    • 数据核
      • 数据库模型
      • 业务逻辑
      • 网络服务
        • myWebservice.asmx
    • 网站
我以以下方式主持这些活动:

  • 我的网站作为新网站托管,网站文件夹作为根文件夹
  • 我的webservices作为应用程序托管在我的网站上,webservices文件夹作为根目录
更直观地说:

  • IIS 7
    • 我的网站=>指向“网站”文件夹
      • Webservices应用程序=>指向数据核心中的“Webservices”文件夹
这导致出现以下url“”,这给了我“无法创建类型”错误

现在,在玩了一会儿之后,我尝试以数据核心作为根来托管我的webservice应用程序,而不是webservice文件夹

视觉上:

  • IIS 7
    • 我的网站=>指向“网站”文件夹
      • Webservices应用程序=>指向“数据核心”文件夹
显然,使用与以前相同的url会给我一个“未找到文件”错误。然而,使用下面的url“”,我终于得到了我的工作Web服务页面

一个小的url细分:

  • http://website/=>我的网站来自“网站”文件夹
    • webservices/=>相当于“数据核心”文件夹
      • webservices/=>数据核心文件夹中的“webservices”文件夹
        • myWebservice.asmx=>在“数据核心”文件夹中的“webservices”文件夹中的webservice文件
我假设,因为我直接从数据核心中的“webservices”文件夹托管我的webservices,所以服务器找不到webservices(位于“bin”文件夹中)的已编译DLL,因为我是在更深层次上托管的

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


我希望这是明确的,并帮助您解决您的问题

另一个可能导致问题的因素。未通过IIS本身为项目创建应用程序。如果代码已在服务器上,请在IIS中从左侧连接窗格导航到该代码。如果网站目录仍然是黄色文件夹图标(而不是全局图标),则需要右键单击它并选择
转换为应用程序
,否则请执行以下步骤

开始->搜索IIS

打开它

右键单击默认网站或计划向其发布服务的网站

添加应用程序输入别名例如“MyWebService”选择物理路径。在我的例子中是
C:\inetpub\wwwroot\MyWebService
,这是我的默认网站路径


然后,当您通过VisualStudio发布时,请选择该文件夹。或者只是将代码文件复制到它。

我很确定这只是Glenn所说内容的一个总结,但我遇到了这个问题,因为我的应用程序是从目录结构中较高的目录创建的

例如,我的web服务位于SiteProject_1/SiteProject_2/service.asmx中


最初,SiteProject_1是我在IIS中转换为应用程序的内容。我可以通过在IIS中删除该应用程序,而不是将SiteProject_2添加到该应用程序中来解决此问题

今天早上我遇到了这个问题,谷歌把我放在了这里,但这些答案都不适用于我。但我确实发现了问题所在——至少在我的情况下是这样——所以我想我会分享它,以防它对其他人有帮助

我有一个web服务,几个月来,它与我所处理的应用程序的其他部分一起在一个解决方案中工作得很好。昨天,我需要在一个发布分支中修复一些东西,所以我在一个版本上打开了VisualStudio