小编Mar*_*ini的帖子

WebService添加布尔参数时消耗的WCF?

我在VS2008中创建了默认的WCF服务.它被称为"Service1"

public class Service1 : IService1
{
    public string GetData( int value )
    {
        return string.Format("You entered: {0}", value);
    }

    public CompositeType GetDataUsingDataContract( CompositeType composite )
    {
        if ( composite.BoolValue )
        {
            composite.StringValue += "Suffix";
        }
        return composite;
    }
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,接口是IService1:

[ServiceContract]
public interface IService1
{

    [OperationContract]
    string GetData( int value );

    [OperationContract]
    CompositeType GetDataUsingDataContract( CompositeType composite );

    // TODO: Add your service operations here
}
Run Code Online (Sandbox Code Playgroud)

这是默认情况下的全部; Visual Studio 2008创建了所有这些.

然后我创建了一个简单的Winforms应用程序来"测试"这个.我将服务参考添加到我上面提到的服务中,一切正常.我可以实现并调用myservice1.GetData(100); 我得到了结果.

但有人告诉我,这项服务必须通过Web Services由Winforms .NET 2.0应用程序使用,因此我继续添加对从头创建的新Winforms .NET 2.0应用程序的引用(只有一个名为form1的winform).这次,在添加"web引用"时,它添加了属于webservices的典型"localhost"; 向导看到了WCF服务(在后台运行)并添加了它.

当我尝试使用它时,我发现GetData(int)方法现在是GetData(int,bool). …

c# wcf .net-3.5 visual-studio-2008 .net-2.0

10
推荐指数
1
解决办法
4361
查看次数

WCF:我如何以编程方式重新创建这些App.config值?

我有一个WCF服务,如果我创建服务时没有指定任何绑定或端点(当我通过Visual Studio注册WCF时从App.config中生成的值读取它).

我有一个返回服务引用的简单方法:

return new SmsServiceReference.SmsEngineServiceClient();
Run Code Online (Sandbox Code Playgroud)

这工作正常(因为从配置中读取值).但是,我想在数据库(例如URI)中有一些这些值,并希望这样做:

        Binding binding = new BasicHttpBinding();
        EndpointAddress endpointAddress = new EndpointAddress( "my.uri.com/service.svc" );

        return new SmsServiceReference.SmsEngineServiceClient(binding,endpointAddress);
Run Code Online (Sandbox Code Playgroud)

这不起作用.当我尝试使用服务引用时,它会抛出异常.

我怀疑这是因为我的App.config有更多信息,其中两条线路没有提供(显然).问题是,如何以编程方式复制以下App.Config值?

这是我App.Config的片段:( URI已被修改以保护无辜者).

  <system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_ISmsEngineService" closeTimeout="00:01:00"
        openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
        allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
        maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
        useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
          maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
            realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://www.myuri.com/Services/Services.svc/basic"
      binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISmsEngineService"
      contract="SmsServiceReference.ISmsEngineService" name="BasicHttpBinding_ISmsEngineService" />
</client>
Run Code Online (Sandbox Code Playgroud)

.net wcf wcf-binding

10
推荐指数
1
解决办法
9676
查看次数

RXJava2:链式改造请求的正确模式

我对RXJava一般来说相对较新(实际上只开始使用它与RXJava2),我发现的大多数文档往往是RXJava1; 我现在通常可以在两者之间进行转换,但整个Reactive的东西都很大,它是一个压倒性的API,有很好的文档(当你能找到它时).我正在尝试简化我的代码,我想用婴儿步骤来做.我想要解决的第一个问题是我在当前项目中做了很多常见的模式:

您有一个请求,如果成功,您将用于发出第二个请求.

如果其中一个失败,您需要能够识别哪个失败.(主要是显示自定义UI警报).

这就是我现在通常这样做的方式:

(.subscribeOn/observeOn为简单起见省略)

Single<FirstResponse> first = retrofitService.getSomething();

first
   .subscribeWith(
     new DisposableSingleObserver<FirstResponse>() {
         @Override
         public void onSuccess(final FirstResponse firstResponse) {

               // If FirstResponse is OK…
                Single<SecondResponse> second = 
                 retrofitService
                    .getSecondResponse(firstResponse.id) //value from 1st
                    .subscribeWith(
                      new DisposableSingleObserver<SecondResponse>() {

                           @Override
                           public void onSuccess(final SecondResponse secondResponse) {
                              // we're done with both!
                           }

                           @Override
                            public void onError(final Throwable error) {
                            //2nd request Failed, 
                            }                        
                     });

         }

         @Override
         public void onError(final Throwable error) {
              //firstRequest Failed, 
         }
      });
Run Code Online (Sandbox Code Playgroud)

在RXJava2中有更好的方法来处理这个问题吗?

我尝试过 …

java android rx-java retrofit2 rx-java2

10
推荐指数
1
解决办法
6612
查看次数

在.NET中编译与版本无关的DLL

脚本

我有两个围绕Microsoft Office的包装器,一个用于2003,一个用于2007.由于有两个版本的Microsoft Office并行运行"不正式",也没有Microsoft推荐,我们有两个盒子,一个用Office 2003,另一个用Office 2003使用Office 2007.我们分别编译包装器.DLL包含在我们的解决方案中,每个框都有相同的结帐但Office 2003或2007"卸载",因此它不会尝试编译该特定的DLL.由于Office COM DLL不可用,如果不这样做将导致编译错误.

我们使用.NET 2.0和Visual Studio 2008.

事实

由于Microsoft在2007年神秘地改变了Office 2003 API,重命名和更改了一些方法(叹气)从而使它们不向后兼容,我们需要两个包装器.我们为每台构建机器提供了解决方案,并激活了一个Office DLL.例如:具有Office 2003的计算机已卸载"Office 2007"DLL,因此无法对其进行编译.另一个盒子是相同的想法,但反过来.这一切都是因为我们不能在同一个盒子中有2个不同的Office用于编程.(根据微软,你可以在技术上将两个Office放在一起),但不能用于编程,也不能没有一些问题.

问题

当我们改变了应用程序版本(从1.5.0.1至1.5.0.2为例),我们需要重新编译DLL相匹配的应用程序的新版本,这是自动完成的,因为Office包装包含在解决方案.由于包装器包含在解决方案中,因此它们继承了APP版本,但我们必须执行两次,然后将另一个DLL"复制"到创建安装程序的计算机上.(痛苦......)

是否可以编译一个可以与任何版本的应用程序一起使用的DLL ,尽管它"更老"?我已经阅读了一些关于清单的内容,但我从未与这些内容进行过互动.任何指针将不胜感激.

秘密原因是,我们没有在"时代"改变了我们的包装和也没有微软与他们的古老的API,但我们正在重新编译DLL以匹配应用程序版本,每一个我们做的释放.我想自动化这个过程,而不是依赖两台机器.

我无法从项目中删除DLL(它们都没有),因为存在依赖项.

我可以创建第三个"主包装器"但尚未考虑过它.

有任何想法吗?有其他要求相同的人吗?

UPDATE

澄清:

我有一个N项目的解决方案.

"应用程序"+ Office11Wrapper.dll + Office12Wrapper.dll.

两个"包装器"都使用应用程序的依赖关系+解决方案中的其他库(数据层,业务层,框架等)

每个包装器都有相应Office包的引用(2003和2007).

如果我编译并且没有安装office 12,我会从Office12Wrapper.dll中找不到Office 2007库的错误.所以我拥有两台构建机器,一台使用Office 2003,一台使用Office 2007.在每台机器上进行完整的SVN更新+编译之后,我们只需在"安装程序"中使用office12.dll就可以将编译器编译为"相同"代码,相同版本".

注意:Office 2007 Build Machine,Office 2003的Wrapper"已卸载",反之亦然.

提前致谢.

.net c# dll version visual-studio-2008

9
推荐指数
1
解决办法
8575
查看次数

iOS - 将图像发送到Instagram - DocumentInteraction

是否可以绕过行动共享表将照片分享给Instagram?

请注意,我知道UIDocumentInteractionController挂钩,事实上它工作正常.通过他们的示例代码,您可以获得一个Copy to Instagram选项(如果您使用独家UTI或可以处理JPG/PNG的大量应用程序,以及Instagram,则可以选择).

这很好,但我想知道是否有办法执行"复制到Instagram"操作,而无需UIDocumentInteractionController在iOS 9+中显示菜单.

为了记录,这是完美运行的代码的简化版本.假设你有一个有效的NSURL ......

        guard let data: NSData = NSData(contentsOfURL: url), 
                  image = UIImage(data: data) else {
            return
        }

        let imageData = UIImageJPEGRepresentation(image, 100)
        let captionString = "caption"
        let writePath = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent("instagram.ig")

        guard let _ = imageData?.writeToFile(writePath, atomically: true) else {
            return
        }

        let fileURL = NSURL(fileURLWithPath: writePath)
        self.documentController = UIDocumentInteractionController(URL: fileURL)
        self.documentController.delegate = self
        self.documentController.UTI = "com.instagram.photo"
        self.documentController.annotation = NSDictionary(object: captionString, forKey: "InstagramCaption") …
Run Code Online (Sandbox Code Playgroud)

uiactionsheet ios uidocumentinteraction instagram swift

9
推荐指数
1
解决办法
2245
查看次数

从Visual Studio 2005迁移到2008和.NET 2.0

我目前正在使用VS2005 Profesional和.NET 2.0,由于我们的项目相当大(解决方案中有25个项目),我想尝试VS 2008,因为它在理论上更快,项目更大.

在做这样的事情之前,我想知道我读过的是不是真的:我可以在".net 2.0"模式下使用VS2008吗?我不希望我的客户安装.net 3.0或.3.5,我只想安装VS2008,打开我的解决方案并从那里开始工作.

这可能吗?

PD:解决方案是ac#Window Forms项目.

.net c# .net-3.5 visual-studio .net-2.0

8
推荐指数
1
解决办法
703
查看次数

在SQL Server 2008中查找无效日期

我有300.000行表; 其中一列是varchar()但它确实包含日期xx/xx/xxxx或x/x/xxxx或类似的.但执行以下测试会产生错误:

SELECT CAST(MyDate as Datetime) FROM MyTable
Run Code Online (Sandbox Code Playgroud)

问题是它没有告诉我哪一行......

我通过试验错误执行了一系列"手动"更新并执行了简单的更新来修复这些更新,但必须有一些奇怪的值需要删除或修复.

例如,我执行了一个修复了大约40行的简单测试:

UPDATE MyTable SET MyDate = REPLACE(MyDate, '/000','/200') FROM MyTable WHERE MyDate like ('%/000%’)
UPDATE MyTable SET MyDate = REPLACE(MyDate, '/190','/199') FROM MyTable WHERE MyDate like ('%/190%’)
Run Code Online (Sandbox Code Playgroud)

这修复了很多奇怪的行,其日期类似于01/01/0003等.(日期范围从1998年到2010年).

但是,我想知道上面的选择中哪些行失败了.

什么是最好的打印方式,所以我可以删除它们,编辑它们或看看该怎么做?谢谢.

date sql-server-2008

8
推荐指数
1
解决办法
2万
查看次数

Visual Studio 2008中的颜色

我正在努力使用Visual Studio 2008.我使用某种形式的"Zen"颜色比我记忆中的更多.在VS2008中,我不断获得一种我无法阅读的颜色,而且我无法识别它; 问题的目的是避免试错(VS颜色界面真的很丑,没有"实时"应用按钮).

如果你看下面的图片,我正在调试,顶部的函数调用了下面的函数.问题是上层函数中的调用行变为白色(背景)并且难以阅读.

问题是:有人知道确切的设置会让我改变吗?

提前致谢.

Sshot

colors visual-studio-2008

7
推荐指数
1
解决办法
1397
查看次数

使用Ling to SQL的DatagridView的最简单方法

我从来没有使用过datagrids等,但是今天我遇到了一个简单的问题并且决定"数据绑定"的东西来更快地完成它,但是我发现它不能像我期望的那样工作.

我通过做一些简单的事情来做到这一点:

 var q = from cust in dc.Customers
         where cust.FirstName == someString
         select cust;

 var list = new BindingList<Customer>(q.ToList());
 return list;
Run Code Online (Sandbox Code Playgroud)

然后在DataGridView1.DataSource中使用该列表就是我所需要的一切,但是,无论我多少谷歌,我都找不到一个关于如何填充(添加/编辑/修改)单个表的结果的体面示例查询到DataGridView1.大多数样本都谈论我缺乏的ASP.NET,这就是WinForms.

有任何想法吗?

我遇到过其他帖子和GetNewBindingList,但这似乎没什么变化.

我错过了什么(必须明显)?

.net c# datagridview linq-to-sql

7
推荐指数
1
解决办法
3万
查看次数

使用.NET的Apple的Bonjour服务?

我有一个通过Bonjour发布的iPhone应用程序.Mac对应物可以工作,它们可以同步和交换数据.现在我必须将那个小Mac应用程序移植到Windows.我决定使用.NET(因为这就是我所知道的).

该应用程序并不复杂,但我还处于早期阶段.我需要浏览/发现Bonjour服务.为此,我下载了Mono.Zeroconf和Apple的最新SDK(其中包括几个C#样本).

我并没有真正粘贴代码,因为我真的要复制/粘贴样本.实际上,Mono.Zeroconf有一个MZClient.exe,可用于测试"所有API".

我的第一个测试是 - 在同一个盒子里 - 打开两个cmd.exe并启动一个MZclient注册服务,另一个,启动它并"发现它".

它不起作用.

这是服务器:

C:\MZ>MZClient -v -p "_http._tcp 80 mysimpleweb”

*** Registering name = 'mysimpleweb', type = '_http._tcp', domain = 'local.'
*** Registered name = ‘mysimpleweb’
Run Code Online (Sandbox Code Playgroud)

在另一个终端:

c:\MZ>MZClient -v -t "_http._tcp"
Creating a ServiceBrowser with the following settings:
  Interface         = 0 (All)
  Address Protocol  = Any
  Domain            = local
  Registration Type = _http._tcp
  Resolve Shares    = False

Hit ^C when you're bored waiting for responses.
Run Code Online (Sandbox Code Playgroud)

就是这样.什么都没发生.我当然试过不同的服务无济于事.甚至玩那个领域的东西.记住这是同一个盒子.我尝试了另一台计算机,因为这是OSX中的一个虚拟机,所以我继续尝试了一个"纯粹的"胜利XP.没有.

注意:我有Apple Bonjour服务(启动并运行)以及Apple SDK(稍后安装).

鉴于这不起作用,我继续并决定尝试使用具有Interop和一些预编译样本(及其源代码)的Apple SDK.

简短的故事,mDSNBrowser.exe和SimpleChat.exe都不工作/查看/发现任何东西.

我的盒子是Parallels下的Win7,但这似乎并没有影响任何东西,因为原生XP表现出同样的问题. …

.net c# bonjour

7
推荐指数
1
解决办法
7436
查看次数