Web.config不在WCF的IIS中使用

时间:2018-08-28 04:48:49

标签: wcf iis web-config

我有一个在IIS中运行的WCF服务。我按照本教程将其托管在IIS中: https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/how-to-host-a-wcf-service-in-iis

我有一个简单的Web.config文件,该文件无法被该服务识别:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.serviceModel>
    <services>
      <service name="MyApp.Service1">
        <endpoint address=""
              binding="wsHttpBinding"
              contract="MyApp.IService1" />

    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />
  </service>
</services>
  </system.serviceModel>
</configuration>

运行此行代码时,出现错误:对象未设置为对象的实例:

var test = ConfigurationManager.AppSettings["aspnet:UseTaskFriendlySynchronizationContext"];
var x = test.ToString();

我在与DLL相同的文件夹中拥有Web.config文件。整个服务位于wwwroot中。

我缺少一些设置来使web.config实际工作吗? IIS中是否需要设置某些内容才能使用web.config?如何使IIS识别我的web.config?

1 个答案:

答案 0 :(得分:1)

app.config文件生效失败是导致此问题的主要原因。 如示例中所述。

  •   

    在应用程序目录中创建一个名为“ service.svc”的新文件

  •   

    在应用程序目录中创建一个名为“ Web.config”的文件

如果要在IIS中托管wcf服务库项目,则应遵循以下步骤。

您必须将配置代码移动到托管环境可以识别的配置文件中。然后,您将能够正确阅读web.config。

  

是的,它是一个服务类库。不确定应用程序的配置文件是什么意思。那是app.config吗?

这是有关如何部署wcf服务库的正式文件。

https://docs.microsoft.com/en-us/dotnet/framework/wcf/deploying-a-wcf-library-project

通常来说,我们在Windows服务托管环境中使用wcf的app.config。