小编Cod*_*ior的帖子

MVC:如何将字符串作为JSON返回

为了使进度报告过程更可靠并将其与请求/响应分离,我正在Windows服务中执行处理并将预期的响应持久保存到文件中.当客户端开始轮询更新时,意图是控制器将文件的内容(无论它们是什么)作为JSON字符串返回.

该文件的内容已预先序列化为JSON.这是为了确保没有任何阻碍响应的方式.不需要处理(没有将文件内容读入字符串并返回它)以获得响应.

我最初虽然这很简单,但事实并非如此.

目前我的控制器方法看起来如此:

调节器

更新

[HttpPost]
public JsonResult UpdateBatchSearchMembers()
{
    string path = Properties.Settings.Default.ResponsePath;
    string returntext;
    if (!System.IO.File.Exists(path))
        returntext = Properties.Settings.Default.EmptyBatchSearchUpdate;
    else
        returntext = System.IO.File.ReadAllText(path);

    return this.Json(returntext);
}
Run Code Online (Sandbox Code Playgroud)

Fiddler将此作为原始回复

HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Mon, 19 Mar 2012 20:30:05 GMT
X-AspNet-Version: 4.0.30319
X-AspNetMvc-Version: 3.0
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 81
Connection: Close

"{\"StopPolling\":false,\"BatchSearchProgressReports\":[],\"MemberStatuses\":[]}"
Run Code Online (Sandbox Code Playgroud)

AJAX

更新

以下内容可能会在以后更改,但是现在,当我生成响应类并将其作为JSON返回时,这就像普通人一样.

this.CheckForUpdate = function () {
var parent = this;

if (this.BatchSearchId != null && WorkflowState.SelectedSearchList != "") {
    showAjaxLoader …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc json

63
推荐指数
3
解决办法
9万
查看次数

SQL Server返回错误"用户登录失败'NT AUTHORITY\ANONYMOUS LOGON'." 在Windows应用程序中

最近开始无法连接到数据库的应用程序一直没有问题(并且在大约6个月左右没有对其进行任何活动开发).操作管理员无法说出可能导致问题的更改内容.

客户端应用程序使用具有Integrated Security = True的硬编码连接字符串,但是当应用程序尝试创建与数据库的连接时,它会抛出一个SQLException,表示"用户登录失败'NT AUTHORITY\ANONYMOUS LOGON".

我可以通过此帐户上的Management Studio登录数据库而不会出现问题.我在这个问题上看到的所有内容都是针对ASP.NET项目的,显然它是"双跳问题",它是一个客户端应用程序,最好不要成为问题.任何帮助将不胜感激.

编辑

客户端计算机和服务器计算机以及用户帐户位于同一域中.Windows防火墙关闭时会发生这种情况.

主要理论是:服务器大约一周左右重新启动,并且未能注册服务主体名称(SPN).未注册SPN可能导致集成身份验证回退到NTLM而不是Kerberos.

sql-server security sqlconnection

62
推荐指数
4
解决办法
20万
查看次数

MSTest拒绝运行64位?

我正在为使用Outlook Redemption的应用程序编写测试,该应用程序绝对必须运行64位(它连接到Windows MAPI和Outlook x64).不幸的是,我不能为我的生活让它在64位运行测试.我试过使用一个.runsettings文件(编辑表示64位)和一个.testsettings文件(也编辑过),最后我选择了Test>TestSettings>Default Processor Architecture>64-bit,但无济于事.

每次,System.Environment.Is64BitProcess都为false,当我加载dll连接到Outlook和MAPI时,我得到了可怕的COM异常:Wrong OS or OS version for application (Exception from HRESULT: 0x800401FA (CO_E_WRONGOSFORAPP))这表示安装了64位Outlook,并且尝试访问它的进程是32位.

我在更改设置后重新启动了VS 2012,因为我已经读过可能需要重新启动的地方.有没有人有任何其他建议?我可以把它写成一个运行非正式测试并报告其状态的控制台应用程序,但我的下一步是将这些测试集成到自动构建中.任何帮助将不胜感激.

编辑

.testsettings中的主机设置页面的屏幕截图 在此输入图像描述

实验

有趣的是,我做了一个小实验.我用一个控制台应用项目创建了一个新的解决方案.我在那里放了一个公共方法,只是返回true.当我运行控制台应用程序并暂停执行时,我看起来确实运行了64位; 没问题.然后我添加了一个测试项目,创建了一个调用该方法的测试.我还添加var is64 = Environment.Is64bitProcess并在其后添加断点.

可以预见,在不改变任何选项的情况下,is64是错误的.我从测试下拉列表中选择了64位默认架构,然后清理了解决方案,并再次运行测试,结果相同,运行32位.我重新启动VS2012,清理,构建,结果相同.我创建了一个testsettings文件,并在Test菜单中引用它,清理构建,同样,重新启动,清理,构建相同.我创建了一个runsettings文件,set <TargetPlatform>x64</TargetPlatform>,在测试菜单中引用它,再次运行它,并得出相同的结果.QTAgent32.exe继续运行该过程,绝对拒绝注意我的运行64位的要求.

我发誓,如果我必须删除QTAgent32.exe并将QTAgent重命名为该名称,我会的.当我想要顽固的时候,我不会把我的意愿压在计算机的喉咙上.如果你不想看到我虐待工作站,请有人告诉我出了什么问题.想想电脑.

.net c# 64-bit mstest outlook-redemption

15
推荐指数
3
解决办法
9006
查看次数

登录前握手期间发生错误

在将此标记为重复之前,请完整阅读.

在我正在调试的项目中,我收到一个SqlException,说明如下:

附加信息:已成功与服务器建立连接,但在登录前握手期间发生错误.(提供者:SSL提供者,错误:0 - 等待操作超时.)

这发生在调试会话期间,前一个会话只在几秒钟之前执行而没有问题.自初始异常以来,我无法连接到此项目中的数据库服务器. SqlConnection.Open()方法调用抛出异常.

的背景

这不是我第一次收到这个.在此之前,我花了两个星期的努力,最终为它启动了微软的支持票.在那个例子中,事实证明连接字符串上的ApplicationName属性太长(我们使用的是完全限定的程序集名称)并缩短它可以缓解问题.

这一次,有

  • 没有提供ApplicationName值
  • WinSocks处于默认状态
  • 防病毒(ESET)被禁用,不是问题.
  • 工作和非工作调试会话之间没有安装任何内容

最后,我突发奇想,创建了一个新项目,其唯一目的是连接到同一个SQL服务器.我将连接字符串从非工作项目复制到新项目中并连接.是否存在某种每个项目的连接缓存?在Clean> Rebuild以及Visual Studio和Windows的重启中幸存下来的东西呢?

相关守则

    public SqlConnection OpenSqlConnection(string connectionString)
    {
        var conn = new SqlConnection(connectionString);
        conn.Open();
        _connectionString = connectionString;
        var sb = new SqlConnectionStringBuilder(_connectionString);
        _server = sb.DataSource;
        _database = sb.InitialCatalog;
        return conn;
    }
Run Code Online (Sandbox Code Playgroud)

传入的连接字符串是从应用程序中其他位置的SqlConnectionStringBuilder输出的.连接字符串类似于:"Data Source=SERVER;Initial Catalog=DATABASE;Integrated Security=True;Connect Timeout=60"

.net c# sql-server connection-string database-connection

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

NuGet包还原不会在构建时还原包

我正在将我们的源代码从Vault迁移到TFS,而不是为迁移或其他任何事情而烦恼,只需将最新的保险库添加到TFS中即可.

该解决方案有几个项目,每个项目至少有一个NuGet包.我想让Package Restore再次运行.它在Vault中工作(但不是它应该的方式).我在一个截止日期之前,它最初没有工作,所以我添加了一个Pre-Build事件来针对每个项目的packages.config运行nuget.exe.

TFS构建服务抱怨这一点,所以我试图让它"正确"工作.

  1. 我在Visual Studio工具菜单中设置了选项.
  2. 我已经安装了NuGetEnablePackageRestore并运行修复程序.
  3. 我已经验证package目录是源控件,但是为空.
  4. 我已经验证了每个项目文件都包含以下内容:
<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
Run Code Online (Sandbox Code Playgroud)

使用诊断级别详细程度构建会显示每个项目都会评估这些属性,但nuget.targets中的RestoreCommand永远不会执行.

有什么想法吗?

我试图从这些链接实现解决方案:

  1. nuget - 包恢复无法正常工作
  2. NuGet包恢复不起作用 - 我在那里发布了一个问题/评论要求澄清......
  3. http://nuget.codeplex.com/workitem/1879

编辑

此外,我发现在构建期间正在评估RestoreCommand属性.诊断详细程度显示:

RestoreCommand = (set EnableNuGetPackageRestore=true) && "C:\Source\Kiersted Direct And Related\Direct\Kiersted\.nuget\nuget.exe" install "packages.config" -source "@(PackageSource)" -o "C:\Source\Kiersted Direct And Related\Direct\Kiersted\packages"
Run Code Online (Sandbox Code Playgroud)

msbuild tfs package-managers nuget

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

如何将deployIisAppPath指定为非DefaultWebSite的站点根目录?

我有一个ASP.NET MVC Web应用程序项目,我想部署到我的IIS Web服务器.站点树是这样设置的:

SERVERNAME(myDomain\Username)
   Application Pools
   Sites
      Default Web Site
      MyProjectSite
         bin
         Content
         ...
         Views
Run Code Online (Sandbox Code Playgroud)

我正在尝试部署到MyProject站点.请参阅下面我正在使用的设置与我要返回的错误.我显然没有正确指定我的网站路径,但对于我的生活,我无法弄清楚它应该是什么.

迭代之间的以下设置保持不变:

/p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish /p:CreatePackageOnPublish=False /p:MSDeployPublishMethod=WMSvc /p:AuthType=Basic /p:Username="myUserName" /p:Password="MyPassword" /p:AllowUntrustedCertificate=True

将SiteName /指定为IISAppPath:

参数:

/p:MsDeployServiceUrl="https://serverName:8172/MsDeploy.axd?Site=MyProjectSite" /p:DeployIisAppPath="MyProjectSite/"

错误:

Could not complete an operation with the specified provider ("createApp") when connecting using the Web Management Service - 我不想创建新网站.我想同步已经存在的内容.

将IISAppPath指定为Root(假设使用了URL中的网站名称)

参数:

/p:MsDeployServiceUrl="https://serverName:8172/MsDeploy.axd?Site=MyProjectSite" /p:DeployIisAppPath="/"

错误:

Could not complete an operation with the specified provider ("iisApp") when connecting using the Web Management Service - 看起来它正试图访问默认网站或其他东西(我故意不给自己的权利).

将IISAppPath指定为空字符串(假设使用URL中的网站名称)

参数:

/p:MsDeployServiceUrl="https://serverName:8172/MsDeploy.axd?Site=MyProjectSite" /p:DeployIisAppPath=""

错误: …

iis msbuild tfs msdeploy

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

WPF应用程序中的全局实体框架上下文

我正在开发使用Entity Framework(.NET 3.5)的WPF应用程序.它访问整个地方的实体.我担心整个应用程序在实体方面的一致性.我应该在不同的视图中实例化单独的上下文,还是应该(并且这是一个很好的方法)实例可以全局访问的单个上下文?

例如,我的实体模型有三个部分:发货(带有子包和更多子内容),公司/联系人(带有子地址和电话)和磁盘规格.Shipments和EditShipment视图访问DiskSpecs,OptionsView管理DiskSpecs(创建,编辑,删除).如果我编辑DiskSpec,如果我有单独的上下文,我必须在ShipmentsView中有一些东西来检索最新的规格吗?

如果有一个整体上下文可以安全地从应用程序的其余部分检索它的对象,那么我想这是要走的路.如果是这样,该实例将放在哪里?我正在使用VB.NET,但我可以从C#翻译得相当不错.任何帮助,将不胜感激.

我只是不希望其中一个应用程序用户必须在应用程序的不同部分重新加载十几次来获取新数据.

更新:

好的,所以我更改了我的应用程序如下:

  1. 所有上下文都是在使用块中创建的,以便在不再需要它们之后将其处理掉.
  2. 加载后,所有实体在处置之前都会从上下文中分离出来.
  3. MainViewModel(ContextUpdated)中的新属性引发一个事件,所有其他ViewModel都订阅了哪个ViewModels RefreshEntities方法.
  4. 实现之后,我开始收到错误,说实体一次只能被一个ChangeTracker引用.由于我无法确定哪个上下文仍然引用实体(不应该是任何上下文对吗?)我将对象转换为IEntityWithChangeTracker,并将SetChangeTracker设置为空(Null).

这让我们解决了当前的问题:当我在实体上对changeTracker进行Null,然后将其附加到上下文时,它会丢失它的已更改状态并且不会更新到数据库.但是,如果我没有使更改跟踪器为空,我无法附加.我有自己的更改跟踪代码,所以这不是问题.

我的新问题是,你应该怎么做呢.一个很好的例子实体查询和实体保存代码剪切会有很长的路要走,因为我试图得到我曾经认为是一个简单的交易工作.

vb.net wpf entity-framework

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

将HierarcicalDataTemplates与TreeViewItem控件模板结合使用

美好的一天,

我在确定如何模板化以下TreeView项目布局时遇到了一些困难: TreeView项目布局样机

我有几个项目,SearchList,其中包含一个Search集合,其中包含DataSet的集合(排序,但不在此处).我遇到的困难是按照我想要的方式设置每个节点级别.我正在使用MVVM,并且TreeViews ItemsSource属性被设置为SearchListViewModels的ObservableCollection,后者又在对象树中一直包含我的对象.

我可以成功设置SearchList HierarchicalDataTemplate的样式以正确显示它们.我挂起的地方是SearchTerm节点样式.我希望DataSets在SearchTerm内容区域右侧的包装面板或统一网格(我还没有决定)中表示.我已经修改了一个TreeViewItem控件模板,以此方式表现,但是如果我在Search HierarchicalDataTemplate的ItemContainerStyle属性中设置它,它什么都不做.显示的所有内容都是搜索的内容.

我的Altered TreeViewItem模板

<Style TargetType="{x:Type TreeViewItem}" x:Key="AlteredTreeViewItem">
    <Setter Property="HorizontalContentAlignment"
        Value="Stretch" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type TreeViewItem}">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"
                            MinWidth="19" />
                        <ColumnDefinition Width="0.414*" />
                        <ColumnDefinition Width="0.586*"/>
                    </Grid.ColumnDefinitions>
                    <Border x:Name="Bd" HorizontalAlignment="Stretch"
                        Grid.Column="1" Grid.ColumnSpan="1" Background="#7F058956">
                        <ContentPresenter x:Name="PART_Header" Margin="10,0" />
                    </Border>
                    <WrapPanel x:Name="ItemsHost"
                        Grid.Column="2" IsItemsHost="True"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

我的搜索分层数据模板

    <HierarchicalDataTemplate DataType="{x:Type local:SearchViewModel}"  ItemsSource="{Binding MySearch.Custodians}" ItemContainerStyle="{StaticResource AlteredTreeViewItem}">
        <TextBlock Text="{Binding MySearch.SearchName}" Foreground="Black" FontFamily="Arial" FontSize="16"/>
    </HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)

当然,其他人的作品都有不同的风格,并且儿童用品的布局不同.任何人都有这样做的经验可以帮助我吗?

wpf treeview hierarchicaldatatemplate itemspanel

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

在VB6中与WCF Windows服务通信?

我有一个VB6应用程序,我想与我编写的WCF Windows服务进行通信,该服务导入了安全证书.服务中唯一的函数需要两个字符串参数.然而,让两个程序进行通信我遇到了很多困难.

在VB.NET中,它很简单,只需像对待Web服务一样引用服务即可.然而,在VB6中,它看起来并不那么简单.仅搜索似乎提供了如何在VB6中编写Windows服务的示例.

有谁知道这是怎么做的?

vb6 wcf windows-services

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

WPF MVVM textBox文本绑定

我刚刚开始使用MVVM,如果我做了一些非常愚蠢的事情,那么道歉.我试着写一个非常简单的测试来看看我是否能记住一切,而对于我的生活,我不明白为什么它不起作用.

在我看来,我有一个textBox,其text属性绑定到ViewModel中的值.然后当按下按钮时,应该更改值并更新textBox.

我可以看到值确实改变了(我在buttom press命令中添加了MessageBox.Show()行)但是textBox没有更新.

我认为这意味着我没有正确实施INotifyPropertyChanged事件,但我无法看到我的错误.

有人能指出我正确的方向吗?

这是代码:

视图

<Window x:Class="Mvvm.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">

<StackPanel Orientation="Horizontal" VerticalAlignment="Top">
    <TextBox Height="40" Width="200" Text="{Binding helloWorld.Message, UpdateSourceTrigger=PropertyChanged}"/>
    <Button Command="{Binding UpdateTimeCommand}">Update</Button>
</StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

在视图后面

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DataContext = new ViewModel.MainWindowViewModel();
    }
}
Run Code Online (Sandbox Code Playgroud)

视图模型

namespace Mvvm.ViewModel
{
internal class MainWindowViewModel
{
    private HelloWorld _helloWorld;

    /// <summary>
    /// Creates a new instance of the ViewModel Class
    /// </summary>
    public MainWindowViewModel()
    {
        _helloWorld = new HelloWorld("The …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm inotifypropertychanged

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