gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:53:54 26 4
gpt4 key购买 nike

我在使用网络服务和进行网络服务调用时遇到问题。

我正在创建将生成 dll 的类库应用程序,这个 dll 将被其他应用程序用来连接 web 服务。我已经从第三方收到了 WSDL 文件,我“添加服务引用”并使用了所有创建我的 SOAP 主体的代理类。现在我有两个问题需要将 wsse:security header 添加到我的 soap 消息中,如下所示

<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 文件(在添加服务引用时生成)以将其作为 header 标记包含在内。下面是我的 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>

当我尝试如下初始化我的客户端时,我遇到了错误,因为在 ServiceModel 客户端配置部分找不到名称为“ICMS-Http-WSPortType”和契约(Contract)“Ihlth_Service.ICMSHttpWSPortType”的端点元素。这可能是因为没有找到您的应用程序的配置文件,或者因为在客户端元素中找不到与此名称匹配的端点元素

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

我修改了我的代码以在代码中创建一个绑定(bind)和端点地址并传递给客户端然后它工作正常但再次面临安全 header 丢失的问题,因为我在 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 文件或我的代码引用该配置文件来获取信息而不是在代码中给出信息。

通过读取 app.config 文件,整个代码在 Windows 应用程序中工作正常,但在类库应用程序中却没有,这背后有什么原因吗?

请大家给点意见

最佳答案

DLL 的 app.config 充其量只是提醒需要在 使用的 EXE 的 app.config 中放置什么 您的 DLL 或使用您的 DLL 的网站的 web.config

配置系统实际上并没有默认使用它,有点不幸的是,某些工具(例如添加服务引用)会在类库项目中创建一个,但不会对此发出警告。

关于c# - 不使用 app.config 文件的类库应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30933845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com