部署.NET Web服务

时间:2009-09-15 15:01:21

标签: c# web-services

让我作为序言(因为我知道我最终会在回复中得到这个)

  • 是的我知道WCF,但我们现在没有使用或计划(老板不会让步)

好的,我的问题如下。首先,我想将一些.asmx移动到一个单独的项目中。现在它在我们的WAP项目中的几个分散的文件夹中。好的,如果我创建一个新项目:

1)它应该是什么类型? 2)我现在必须面对哪些部署问题?有人告诉我,如果我们将它移动到一个单独的项目,我们必须单独部署它,我认为这意味着IIS,是的,将该项目复制到服务器上的另一个地方 3)有人告诉我,如果我们将其移出WAP项目,我们就不能再在我们的域名下运行该服务(something.com)。但是有人告诉我你可以设置一个单独的Web服务作为“传递”并在任何地方拥有实际的.asmx文件?我不明白。

主要关注的是移动它。如何公开该Web项目中的服务,因为我们将有多个。如何部署(文件和IIS),然后如何确保它在生产中的同一域下仍然可用。

2 个答案:

答案 0 :(得分:3)

asmx文件只是指向C#代码文件的指针。您可以在Web项目的任何位置包含asmx文件。

您可以在Visual Studio IDE中创建Web服务项目,或者只是创建一个类库并添加必要的引用。

Web服务项目使用以下DLL:

  • 的System.EnterpriseServices
  • 的System.Web
  • System.Web.Extensions程序
  • System.Web.Mobile
  • System.Web.Services

以下web.config参考:

<configSections>
  <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
    <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
      <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
        <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
        <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
        <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
        <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
      </sectionGroup>
    </sectionGroup>
  </sectionGroup>
</configSections>  


<httpHandlers>
        <remove verb="*" path="*.asmx"/>
        <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</httpHandlers>

答案 1 :(得分:1)

同意,创建一个新的Web服务项目。

将您的Web服务与IIS中的现有站点一起部署没有任何问题。

创建您现有的网站网址www.something.com然后在IIS中添加虚拟目录或应用程序到myservice,以便获得www.something.com/myservice/awesome.asmx。

您还可以创建一个备用主机标头,以将webservices.something.com定向到您的网络服务。