我有一个在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?
答案 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。