不使用app.config文件的类库应用程序

时间:2015-06-19 08:48:33

标签: c# web-services soap class-library

我在使用网络服务和拨打网络服务时遇到问题。

我正在创建将生成dll的类库应用程序,这个dll将被其他一些应用程序用来连接webservice.I已收到第三部分的WSDL文件,并且我"添加服务引用&# 34;并使用所有代理类来创建我的肥皂体。现在我有两个问题需要将wsse:security标头添加到我的肥皂消息中,如下所示

<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>username</wsse:Username>
              <wsse:Password>password</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security> 

要处理此问题并连接webserivce端点地址已修改我的app.config文件(在添加服务引用时生成)以将其包含为标头标记。下面是我的app.config文件

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
  </configSections>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="ICMS-Http-WSBinding">
          <security mode="Transport">
            <transport clientCredentialType="None" proxyCredentialType="None"
              realm="" />
            <message clientCredentialType="UserName" algorithmSuite="Default" />
          </security>
        </binding>
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="https://devs-dp-in.wellpoint.com/Claims/2.0/Get_iHealthICMS_Results"
          binding="basicHttpBinding" bindingConfiguration="ICMS-Http-WSBinding"
          contract="Ihlth_Service1.ICMSHttpWSPortType" name="ICMS-Http-WSPortType">
        <headers>
          <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <wsse:UsernameToken>
              <wsse:Username>username</wsse:Username>
              <wsse:Password>password</wsse:Password>
            </wsse:UsernameToken>
          </wsse:Security>
        </headers>
      </endpoint >
    </client>
  </system.serviceModel>
</configuration>

当我尝试初始化我的客户端时,我面临错误,因为找不到名称为&#39; ICMS-Http-WSPortType&#39;的端点元素。和合同&#39; Ihlth_Service.ICMSHttpWSPortType&#39;在ServiceModel客户端配置部分中。这可能是因为没有为您的应用程序找到配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素

Service.CMSHttpWSPortTypeClient Client = new Service.CMSHttpWSPortTypeClient("ICMS-Http-WSPortType");  

我修改了我的代码,在代码中创建了一个绑定和端点地址,并传递给客户端,然后它工作正常,但由于我在app.config文件中提供了安全信息,因此再次面临安全标题丢失的问题

BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
 EndpointAddress address = new EndpointAddress("https://devs-dp-in.wellpoint.com/Claims/2.0/Get_iHealthICMS_Results");

有什么方法可以读取app.config文件或我的代码引用该配置文件来获取信息,而不是在代码内部。

这整个代码在windows应用程序中通过读取app.config文件正常工作,但在类库应用程序中没有任何原因吗?

任何人请提出一些想法

1 个答案:

答案 0 :(得分:2)

DLL的app.config充其量只是提醒您需要在使用您的DLL或{{}的EXE的app.config中放置哪些内容1}}一个消耗你的DLL的网站。

配置系统默认情况下并未实际使用它,并且有些工具(例如web.config)会在类库项目中创建一个并且不发出警告,这有点不幸关于这个。