完全在DLL中创建和使用Web服务

时间:2013-10-28 10:15:53

标签: c# web-services dll basichttpbinding

希望有人能帮助我解决这个问题!

我正在为Microsoft CRM编写一个自定义插件,在创建或更新某些实体时,会在我们的Sharepoint实例的后台执行一些任务,这些任务无法通过CRM工作流完成,因为它们不能有功能。

问题是,在创建服务引用时,Web服务的定义以及端点地址等存储在DLL的.config文件中。部署CRM插件时,.config文件在将其部署到磁盘或数据库时不可用,并且一旦我尝试使用Web服务,插件就会失败。

我已经看过BasicHttpBinding的一些文档,但我不完全确定如何以编程方式创建Webservice,以便它完全包含在DLL中。

我并不担心能够在不重新编译的情况下修改细节,因为无论如何代码都会非常静态。

我尝试在项目中定义服务引用,如“TestDws”

BasicHttpBinding SharepointWS = new BasicHttpBinding();
SharepointWS.Name = "SharepointWebservice";
EndpointAddress EndPoint = new EndpointAddress("http://hostname/_vti_bin/dws.asmx");
TestDws.DwsSoapClient temp = new TestDws.DwsSoapClient(SharepointWS, EndPoint);

然而,此插件只是在这一点上缩短了。

最初的.config在配置方面没有更多的东西

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="DwsSoap" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://hostname/_vti_bin/dws.asmx"
                binding="basicHttpBinding" bindingConfiguration="DwsSoap"
                contract="TempDws.DwsSoap" name="DwsSoap" />
        </client>
    </system.serviceModel>
</configuration>

1 个答案:

答案 0 :(得分:0)

我从头开始重新创建了服务引用,并使用了与上面相同的BasicHttpBinding方法,它第二次工作...虽然现在在Sharepoint Webservice上使用了HTTP401!