小编jon*_*ers的帖子

C# - 使用aspx页面的Web服务

我们需要使用特定的库进行序列化,使用如下:

var obj = Serializer.Deserialize(myStream); //Read
Serializer.Serialize(obj, myOtherStream); //Write
Run Code Online (Sandbox Code Playgroud)

我们需要通过Web服务公开它,我已经得到了这样的工作:

  • 文件 - >新建项目 - > ASP .Net WebForms站点
  • 在Page.Load中,我们使用Request和Response成员进行序列化
  • 修改Response中的ContentType
  • 然后我们调用Response.End()
  • 我们还必须在aspx页面中放置Async ="true"

所有这一切似乎都很好.

有没有更好的方法来处理这个?我们希望我们的服务在IIS中运行,但我们不知道是否有任何开销使这个aspx页面.

使用WCF连接它有什么好处吗?

c# iis wcf serialization web-services

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

异步CTP,单元测试ViewModel的异步方法

我有一个单元测试(使用MSTest),如下所示:

[TestMethod]
public void MyTest()
{
    var viewModel = new MyViewModel();
    viewModel.Run();
    //Assert something here
}
Run Code Online (Sandbox Code Playgroud)

Run是一个返回void的异步方法.

让我们说Run是这样实现的:

public async void Run()
{
    //Show a busy indicator here

    try
    {
        var result = await myAsyncModelClass.LongRunningOperation();

        //Use the results here
    }
    finally
    {
        //Hide the busy indicator here
    }
}
Run Code Online (Sandbox Code Playgroud)

myAsyncModelClass.LongRunningOperation(),它本身就是一个异步方法,它返回一些Task<T>地方,其中T是我的ViewModel感兴趣的结果.

我的问题是,我的测试是Run异步运行该方法,因此在Run方法完成之前调用我的断言.奇怪的是,当我放置一个断点时,b/c永远不会达到finally块,因为断言失败了.如何保持Run方法同步以便能够对其进行单元测试?

我也有单元测试myAsyncModelClass.LongRunningOperation(),但我只是打电话,Task<T>.Wait()因为它返回一个任务.这使得它在单元测试时同步.

另外,我想提一下,Run()由一个MVVM框架神奇地调用ICommand. void可能会或可能不是要求退货类型,我将不得不尝试.

.net c# wpf mvvm async-ctp

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

使用.NET 2.0的WCF

我们需要在只能运行.NET 2.0的机器上实现WCF服务.

该机器是Windows XPe POS终端,我们还没有找到安装.NET 3.0的方法.我们无法使用新的XPe映像对其进行格式化,因为安装了专有的POS应用程序和驱动程序.

有没有办法在.NET 2.0上实现WCF服务?我们可以像.NET CF那样使用标准的XmlSerializer作为消息,但.NET CF不支持作为服务器......

另一种解决方案是以某种方式安装.NET 3.0.安装程序抱怨没有安装Windows XP SP2,Windows Update无法在XPe上运行.

有任何想法吗?

更新:我们还希望使用SOAP Web服务,但我们的目标平台没有安装IIS.有没有人知道在没有IIS的情况下托管.NET 2.0 Web服务的良好(生产质量)方式?

解决方案:我们正在使用Cassini和.NET 2.0 Web服务作为明确的答案.到目前为止,这似乎运作良好.谢谢您的帮助.

.net c# wcf windows-xp-embedded .net-2.0

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

C# - SQL Server - ?参数和Oledb

我在C#中编写一个小框架,用于将数据导入SQL Server.

我注意到,如果你试图使用?如果使用System.Data.SqlClient命名空间,则它们不起作用.

但是,如果使用System.Data.OleDb命名空间来处理数据库,它们可以正常工作.(您只需在连接字符串中添加Provider = SQLOLEDB)

所以我有几个问题,因为?我的解决方案需要语法:

  1. 是否有使用System.Data.SqlClient的命名参数的替代方法?我想使用有序参数.
  2. 使用一个名称空间(ado提供程序)比另一个名称空间有任何性能影响吗
  3. 还有其他原因我应该更喜欢一个名称空间吗?

为了详细说明我正在尝试做什么,我的框架将采用一些自定义属性装饰的类并生成SQL,如下所示:

INSERT INTO myTable (col1, col2, ...) VALUES (?, ?, ...)
Run Code Online (Sandbox Code Playgroud)

这个字符串将使用一个IDbCommand和几个IDataParameters创建,对于每个ExecuteNonQuery,它只会在IDataParameters上设置值.

有什么想法吗?

编辑:我尝试使用命名参数作为p0,p1等作为提到的回答者,它在SqlClient上工作得很好.但是,如果我使用Oledb,则会出错:

"Must declare the scalar variable @p0."
Run Code Online (Sandbox Code Playgroud)

我的参数创建如下:

new OleDbParameter("p" + index, GetType(attribute)); 
//GetType does work to get the correct SqlDbType
Run Code Online (Sandbox Code Playgroud)

怎么了?我也试过添加和删除参数名称中的@符号无济于事.

最终编辑:我刚刚使用Oledb?和SqlClient使用命名参数.我可以为新的提供商来回改变.

c# sql-server oledb parameters ado.net

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

MonoTouch - XIB或不是XIB?

我正在决定在使用MonoTouch进行开发时需要使用.xib文件的位置.

我目前的项目需要与iPhone和iPad一起使用,所以我想知道即使使用Interface Builder也是值得的.我必须删除一些设计器文件,以便2个不同的视图(每个设备一个)转到同一个控制器.我也是唯一一个在此工作的人,也没有设计师在IB工作.

以下是几个问题:

  • 使用XIB是否有任何性能优势/降低?
  • 是否有任何软件设计问题,从MVC中删除等等,这种方式或其他方式会不会发生?
  • 使用XIB是否存在任何通用性缺点,例如难以使用XIB为某些视图实现延迟加载?

思考?

iphone model-view-controller xib xamarin.ios

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

Unix C - 编译64位中断"dirname"

我正在使用libgen.h中的dirname从文件名的路径获取目录路径.

这是它的签名:

char * dirname (char *path)
Run Code Online (Sandbox Code Playgroud)

在32位机器上编译或使用-m32与gcc编译时,一切正常.

我的代码看起来像这样:

char* path = "/path/to/my/file.txt";
char* path_cpy = strdup(path);
const char* dir = (const char*)dirname(path_cpy);
Run Code Online (Sandbox Code Playgroud)

如果我在64位机器上编译,我会收到警告:

"warning: cast to pointer from integer of different size"
Run Code Online (Sandbox Code Playgroud)

这将修复警告,但在运行时崩溃:

const char* dir = (const char*)(uintptr_t)dirname(path_cpy);
Run Code Online (Sandbox Code Playgroud)

我之前从未尝试过编译32/64位,有没有办法解决这个问题?

c unix 64-bit gcc dirname

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

Perl - TAP::Harness 和 test_args

我在 perl 中使用TAP::Harness是这样的:

$harness = TAP::Harness->new({
        formatter_class => 'TAP::Formatter::Console',
        merge => 1,
        verbosity => 1,
        normalize => 1,
        color => 1,
        test_args => ['--url', $url, '--session', $session],
    });
Run Code Online (Sandbox Code Playgroud)

一段时间后,我调用 $harness->runtests(),传递一系列测试。

问题是,在我所有的测试中:

use Data::Dumper;
print Dumper \@ARGV;
Run Code Online (Sandbox Code Playgroud)

输出:

$VAR1 = [];
Run Code Online (Sandbox Code Playgroud)

test_args 在底层测试中没有出现在@ARGV 中吗?我需要将一些选项传递给每个测试。

testing perl unit-testing

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

Xamarin.iOS - PIE警告

我们刚刚向应用程序商店提交了一个新的Xamarin.iOS应用程序,并收到Apple发出的警告:

We have discovered one or more issues with your recent delivery for "My App". Your delivery was successful, but you may wish to correct the following issues in your next delivery: 

Non-PIE Binary - The executable 'MyApp.app' is not a Position Independent Executable. Please ensure that your build settings are configured to create PIE executables. For more information, refer to: 
Run Code Online (Sandbox Code Playgroud)

技术问答QA1788 - 建立独立可执行职位

If you would like to update your binary for this app, you can reject this binary …
Run Code Online (Sandbox Code Playgroud)

c# xamarin.ios ios xamarin xamarin-studio

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

XmlNode.InnerText

我们有这样的XML:

<Example>
  <Node>Some text here
    <ChildNode>Child 1</ChildNode>
    <ChildNode>Child 2</ChildNode>
  </Node>
</Example>
Run Code Online (Sandbox Code Playgroud)

我们XmlDocument用来解析这个.

当我们有"Node"元素的XmlNode时,XmlNode.InnerText返回以下信息:

"Some text hereChild 1Child2"
Run Code Online (Sandbox Code Playgroud)

如何在没有子节点内部文本的情况下获取Node元素的内部文本?我们真的不想使用任何RegEx或字符串拆分来完成此任务.

注意:我们也不想切换到使用不同的类来解析这个XML,这将是一个太多的代码更改.

.net c# xml

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

C++ concat LPCTSTR

我正在为WindowsCE CAB文件实现自定义操作,我需要连接LPCTSTR以获取到exe的正确路径.

我的自定义操作接收LPCTSTR作为参数.

所以(伪代码):

extern "C" codeINSTALL_EXIT MYCUSTOMACTION_API Install_Exit(
    HWND    hwndParent,
    LPCTSTR pszInstallDir,
    WORD    cFailedDirs,
    WORD    cFailedFiles,
    WORD    cFailedRegKeys,
    WORD    cFailedRegVals,
    WORD    cFailedShortcuts
)
{
    if (FALSE == LaunchApp(pszInstallDir + "\\MyApp.exe"))
       ::MessageBox(hwndParent, L"Could not launch app!", L"Setup", MB_ICONINFORMATION );
    return codeINSTALL_EXIT_DONE;
}
Run Code Online (Sandbox Code Playgroud)

这是使用虚构的"+"运算符,我将使用我的标准语言C#.

我在C++方面的经验相对较少.为我的目的附加LPCTSTR的正确方法是什么?LaunchApp方法使用此类型作为参数.

另外,如果我想在MessageBox中显示生成的路径(用于调试目的),是否有快速转换为LPCWSTR的方法?

c++ string windows-ce lpcstr

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

使用Data :: Dumper的Perl Web API

我们使用Apache和mod_perl开发了一个开放的Web API,您可以在其中传递由Data :: Dumper创建的文本来发出请求.

我们的数据通常如下所示:

$VAR1 = {
    'OurField' => 'OurValue'
};
Run Code Online (Sandbox Code Playgroud)

目前,我注意到我们正在使用a eval将数据恢复到Perl哈希服务器端:

my $VAR1;
eval $our_dumper_string;
#$VAR1 is now filled with hash value
Run Code Online (Sandbox Code Playgroud)

这个问题,是一个重大的安全问题.您可以在那里传递恶意perl代码,它将运行服务器端...

有一个更好的方法来安全地获取Data :: Dumper字符串并将其转换为哈希?

perl web-services mod-perl data-dumper

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

Xamarin - 在引用Objective-C Binding时无法构建App

这是我的构建错误(带有-v -v -v):

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++  -ObjC -lsqlite3 -lc++ -Wl,-pie  -miphoneos-version-min=5.0 -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk  /MyPath/obj/iPhone/Debug/mtouch-cache/MyApp.exe.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Blendgine.XNA.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/mscorlib.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/MonoGame.Framework.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/OpenTK.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/monotouch.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/System.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/System.Core.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/System.Xml.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/System.Runtime.Serialization.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Blendgine.Core.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/MonoTouch.FacebookConnect.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Microsoft.WindowsAzure.Storage.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/System.Xml.Linq.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/GoogleAnalytics.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Microsoft.WindowsAzure.Messaging.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/MonoTouch.Dialog-1.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/System.Json.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Newtonsoft.Json.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Blendgine.GooglePlay.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/PlayGameServices.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Blendgine.Tapjoy.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/Tapjoy.dll.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/registrar.armv7.o /MyPath/obj/iPhone/Debug/mtouch-cache/main.armv7.o -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/libFacebookSDK.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/libarclite.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/libGoogleAnalytics.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/WindowsAzureMessaging.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/PlayGameServices.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/GooglePlus.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/GoogleOpenSource.a -force_load /MyPath/obj/iPhone/Debug/mtouch-cache/TapjoyPublisherLibrary.a -o /MyPath/bin/iPhone/Debug/MyAppiOS.app/MyApp -framework CFNetwork -framework AVFoundation -framework Accelerate -framework AddressBook -framework AudioToolbox -framework QuartzCore -framework CoreBluetooth -framework CoreData -framework CoreGraphics -framework CoreImage -framework CoreLocation …
Run Code Online (Sandbox Code Playgroud)

objective-c xamarin.ios xamarin

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

Xamarin.Android - Java Binding依赖于Google Play服务

我们使用几种不同类型的Ad网络来编写自己的Java绑定.由于Google已经制作了新的"广告"ID,因此所有这些图书馆现在都依赖于Google Play服务.

问题是,在获得最新版本后,我无法正确构建这些绑定项目.我收到有关缺少类的错误,除非将google-play-services.jar(从extras我的Android SDK中的文件夹)添加Reference Jar到项目中.

添加播放服务jar文件后,我收到一个新错误:

missing class error was raised while reflecting com.somepackage.SomeClass : com/google/android/gms/common/GooglePlayServicesRepairableException : Unsupported major.minor version 51.0 JARTOXML
Run Code Online (Sandbox Code Playgroud)

这个错误通常意味着库正在使用Java 7(Xamarin不支持).我该怎么做才能修复这些绑定项目?

android xamarin.android xamarin java-binding

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