c# - 无法读取配置部分 'system.serviceModel',因为它缺少部分声明

标签 c# web-services iis soap web-config

我们已经使用 .Net 4.5 在 Visual Studio 2013 中创建了一个网络服务。该网络服务在同一台计算机上本地运行良好。

现在我们想将此 Web 服务导出到带有 IIS 的 Windows Server 2008。我们已经制作了一个在端口 8080 上运行的 Web 服务。

但是当我们将导出的文件复制到这个网络服务器的根目录时,出现了以下错误:

Error Summary 
HTTP Error 500.19 - Internal Server Error

The requested page cannot be accessed because the related configuration data for the page is invalid.


Detailed Error Information 


Module
IIS Web Core 

Notification
Unknown 

Handler
Not yet determined 

Error Code
0x80070032 

Config Error
The configuration section 'system.serviceModel' cannot be read because it is missing a section declaration  

Config File
\\?\C:\inetpub\wwwroot\YOR24Websevices\web.config 

Requested URL
http://localhost:8080/ 

Physical Path


Logon Method
Not yet determined 

Logon User
Not yet determined 


Config Source    10:   </system.web>
   11:   <system.serviceModel>
   12:     <bindings>

我们在Visual Studio中导出的webconfig是:

<?xml version="1.0"?>
<configuration>

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>
    <bindings>
      <customBinding>
        <binding name="RightNowSyncBinding">
            <security defaultAlgorithmSuite="Default" authenticationMode="UserNameOverTransport"
            requireDerivedKeys="true" securityHeaderLayout="Lax" includeTimestamp="false">
            <localClientSettings detectReplays="false" />
            <localServiceSettings detectReplays="false" />
          </security>
          <textMessageEncoding messageVersion="Soap12" />
          <httpsTransport />
        </binding>
      </customBinding>
    </bindings>
    <client>
      <endpoint address="https://tkbc-fleetsupport--tst.custhelp.com/cgi-bin/tkbc-fleetsupport--tst.cfg/services/soap"
        binding="customBinding" bindingConfiguration="RightNowSyncBinding"
        contract="RightNowServiceReference.RightNowSyncPort" name="RightNowSyncPort" />
    </client>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service name="Yor24Service.Service">
        <endpoint address="" contract="Yor24Service.IService" binding="basicHttpBinding"/>
        <endpoint address="mex" contract="IMetadataExchange" binding="mexHttpBinding"/>
      </service>
    </services>
    <protocolMapping>
        <add binding="basicHttpBinding" scheme="http" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <!--
        To browse web app root directory during debugging, set the value below to true.
        Set to false before deployment to avoid disclosing web app folder information.
      -->
    <directoryBrowse enabled="true"/>
  </system.webServer>

</configuration>

这个生成的配置文件有什么问题?

最佳答案

从 .Net Framework 4 开始,服务行为不需要名称 ( MSDN )。在 .Net 4 之前,它是强制性的。因为你的服务行为没有名字:

<serviceBehaviors>
    <behavior>
        <!-- name attribute missing in behavior -->
    </behavior>
</serviceBehaviors>

并且 IIS 抛出错误我怀疑您的应用程序池未运行 .Net 4 或更新版本。

关于c# - 无法读取配置部分 'system.serviceModel',因为它缺少部分声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21160031/

相关文章:

c# - 实例化一颗子弹朝向玩家位置

c# - 覆盖 DLL 中的 DataModel

javascript - 我应该选择哪个 Google map 选项?

asp.net - 使用 Microsoft.Web.Administration 所需的权限

iis - 使用 IISWASOnlyAesProvider 生成加密的 IIS 应用程序池标识密码

c# - 什么解码了我的编码哈希符号 (%23)?

c# - XAML 版权 header

c# - 从同一服务器上的 Windows 服务发送在 ASP.NET MVC 应用程序中运行的 SignalR 广播

ios - 如何检查 objective-c 中的 JSON 格式?

java - 我在尝试访问 REST Web 应用程序时收到 404 错误