小编use*_*358的帖子

通过查看其二进制内容以编程方式找到文件类型.可能?

我有一个ac#组件,它将收到以下类型的文件.doc,.pdf,.xls,.rtf

这些将由调用siebel传统应用程序作为文件流发送.

所以...

[LegacyApp] >> {二进制文件流} >> [组件]

遗留应用程序是一个黑盒子,无法修改以告诉组件它发送的文件类型(doc,pdf,xls).组件需要读取此二进制流并在具有正确扩展名的文件系统上创建文件.

有任何想法吗?

谢谢你的时间.

c# file-type filestream

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

一个主要尝试catch方法调用没有实现try-catch的方法

我有一个方法doSomething()有一个try catch块,我在其中调用另一个方法.

    public void doSomething()  
    {  
       try
        {
            doSomethingElse();
        }
        catch
        {
            // catch implementation goes here
        }

    } 
Run Code Online (Sandbox Code Playgroud)

在那个其他方法doSomethingElse()我没有任何尝试catch块.我依靠main方法的try-catch来处理异常.如果有任何例外,doSomethingElse()它们将被冒泡到方法doSomething的try-catch块.

这种方法有什么问题吗?

谢谢你的时间.

c# exception-handling exception

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

使用LINQ比较查询中的日期

我有一个Linq查询返回到var类型myQry

var myQry = from .....
Run Code Online (Sandbox Code Playgroud)

这是一个很大的linq返回我需要进一步过滤的所有记录.在我的一个if条件中,我有一个像这样运行的过滤器来检查日期.我需要检查名称是否包含输入的名称,并确切地匹配生日.

我试过这个编译和运行,但没有正常工作

myQry.Where(x => x.FirstName.Contains(strName) && DateTime.Compare( x.BirthDt, searchDt)>=0).ToList()
Run Code Online (Sandbox Code Playgroud)

然后我尝试了这个,它抛出异常"DbArithmeticExpression参数必须有一个数字公共类型"

myQry.Where(x => x.FirstName.Contains(strName) && (x.BirthDt- searchDt).Days == 0).ToList();
Run Code Online (Sandbox Code Playgroud)

对于这种情况,当我在查询中使用where子句时,进行日期比较的最佳方法是什么?LinQ查询的where子句中不允许进行哪些操作?

谢谢你的时间...

.net c# comparison datetime linq-to-sql

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

通过javascript更新的asp.net mvc禁用文本框不会发布新值

我正在使用强类型模型来查看.我有一个禁用的文本框,其值我使用javascript更新.使用此文本框进行渲染

<%: Html.TextBoxFor(model => model.TotalAmount, new { disabled = "disabled"})%>
Run Code Online (Sandbox Code Playgroud)

这会将带有NAME和ID的文本框呈现为"TotalAmount".TotalAmount也是我的模型上绑定到此视图的属性.

在视图中更新其值的javascript在其函数中是这样的:

document.getElementById('TotalAmount').value = {assigning new value here};
Run Code Online (Sandbox Code Playgroud)

函数确实被调用,当我在另一个可编辑的文本框中更改某个值时,我可以在禁用的文本框中看到该值.但是,当我将此表单发布到我的操作方法时,如下所示:

[HttpPost]
public ActionResult Process (ProcessVM FormPostVM)
{
}
Run Code Online (Sandbox Code Playgroud)

已禁用的文本框属性[TotalAmount]仍具有旧值,但我修改的可编辑文本框包含我输入的新值.为什么禁用的文本框不包含javascript更新值?

我试过用

ModelState.Remove("TotalAmount");
Run Code Online (Sandbox Code Playgroud)

在上面的动作方法中,但正如我已经认为它不起作用.

任何线索,提示?

谢谢你的时间....

asp.net-mvc asp.net-mvc-3

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

如何在.NET中将一个项目编译成多个dll

我试图将一个.Net c#项目编译成多个dll.但事情就是这样.

这是我的项目结构.

Bin 
Dir1 
Dir2 
File1.cs 
File2.cs 
myproject.csproj
Run Code Online (Sandbox Code Playgroud)

我想将此项目编译为File1.dll和File2.dll.File1.dll和File2.dll都使用Dir1和Dir2中的各种.cs文件中的代码.子目录中存在的.cs文件中的一些类是File1.cs所必需的,其他类是File2.cs.File1.cs和File2.cs都会使用一些.

我使用了以下内容:

csc /t:library /out:File1.dll /recurse:*.cs
csc /t:library /out:File2.dll /recurse:*.cs
Run Code Online (Sandbox Code Playgroud)

但是由此产生的dll是彼此的精确副本,只有不同的文件名.有没有办法让我编译它们,以便当我在对象浏览器中检查每个dll时,它只有Dir1和Dir2中.cs文件中的那些类,它们在File1.cs中为File1.dll引用,类似于File2.dll?

我想这样做最好是作为Visual Studio中的后期构建步骤的一部分.

谢谢你的时间...

编辑

感谢您的所有回复.有很多建议将解决方案分成许多项目.虽然这是一种方法,但我不确定我是否想要为两个dll创建任何依赖项,即File1.dll和File2.dll.让我解释..

我在创建多个项目时遇到的问题是File1.cs和File2.cs都需要一些代码.我不希望它们在两个项目中重复出现.将公共代码保存在第三个项目中意味着将创建File1.dll和File2.dll所需的第三个dll.我不想要这个.我只想创建File1.dll和File2.dll,这就是我将它们保存在一个项目中的原因.有关如何实现这一目标的任何建议?

再次感谢您的回复.

干杯.

.net c# visual-studio-2010 csc

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

根据多个字段或列从列表中删除重复项

我有一个MyClass类型的列表

public class MyClass
{
   public string prop1 {} 
   public int prop2 {} 
   public string prop3 {} 
   public int prop4 {} 
   public string prop5 {} 
   public string prop6 {} 
   ....
}
Run Code Online (Sandbox Code Playgroud)

此列表将具有重复项.我想查找和删除此列表中prop1,prop2和prop3重复的项目.如果其他属性是重复的则无关紧要

这是我尝试过的不起作用.

List<MyClass> noDups = myClassList.GroupBy(d => new {d.prop1,d.prop2,d.prop3} ).Where(g => g.Count() > 1).Select(g=> g.Key);
Run Code Online (Sandbox Code Playgroud)

我不想使用任何第三方工具.只有纯粹的linq.

c# linq deduplication

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

构建不在Visual Studio Team Services中发布Web API项目(VS Online)

我在Team Services上创建了一个VS构建定义.当我对它进行排队时,构建会成功运行,它还会为解决方案中的所有项目输出dll,但我使用Web Api2创建的服务层除外.

当我从drop位置下载工件时,我有文件夹,包含数据层,业务层和其他帮助程序项目的dll.我没有的是我可以部署到IIS的主服务层dll.

以下是我的发布设置的屏幕截图.

在此输入图像描述

我能错过什么?

tfs build tfsbuild visual-studio-2013 azure-devops

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

在Silverlight XAML中未更新数据绑定可为空的值

在我的MVVM项目中,我有两个文本框,其中一个文本框绑定到我的对象的可空整数字段,另一个绑定到字符串字段.当视图加载时,如果我向绑定到字符串属性的文本框输入任何值,我可以看到它的值更新为对象的字符串属性.

但是,当我向文本框输入一个绑定到我的对象的可空整数字段的值时,就会出现问题.如果它是一个正确的整数值,则值会更新.如果我在文本框中放置一个字母数字字符串绑定到我的对象的可空整数字段,或者我只是将其留空,那么我的对象的可空整数字段不会更新.它仍然保留了之前设置的内容.

例如.如果我在数字文本框中输入数字'7',它将更新为7.现在如果我将其从'7'更改为'7a'或'a7'或'asd'或将其留空.该值仍然保持为7,这是较早的值.

除了更改可空类型之外,是否有任何解决此问题的方法?

谢谢你的时间...

data-binding silverlight xaml

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

MVC 3项目结构

我试图找到布局我的MVC 3项目的最佳方法.在线搜索时,我遇到了一个建议,基本上是说右击项目并添加区域.这样做是在同一个项目中创建一个具有相同控制器/视图/模型结构的区域文件夹.这不是我想要的.我希望有单独项目的灵活性.我将仅保留主Web项目中的视图.单独项目中的其他所有内容.

为了尝试,我为我的控制器创建了一个单独的项目.现在我被困在将控制器动作指向视图.在所有在线示例中,右键单击并添加视图.这是一个类库项目,我没有这种灵活性.我哪里错了?

我发现的所有例子,包括我在Asp.net上经历的那些例子,基本上都解释了如何创建学习应用程序,这只是为了学习目的.大型商业应用程序不可能在一个项目中拥有所有视图/模型/控制器.或者是它应该进入MVC的方式?我不确定用鼠标点击做一切也是个好主意.在webforms世界中,还有很多针对初学者的应用程序,它们使用鼠标点击来创建基本的CRUD应用程序,但在实际的商业项目中,我们从未使用过这些方法.

你有什么想法,对此有何指导?

谢谢你的时间...

asp.net-mvc

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

C# 将自定义标头设置为 httpclient 会出现错误,因为标头名称被误用

我正在尝试设置像这样的自定义标头

x-my-header:somecustomval
content-type:application/vnd.status+json
.
.
.
other headers
Run Code Online (Sandbox Code Playgroud)

我尝试了两种方法,使用标题字典

#1

_httpClient.DefaultRequestHeaders.Clear();

foreach (var h in headers)
{
  _httpClient.DefaultRequestHeaders.Add(h.Key.ToString(), h.Value.ToString());
}
Run Code Online (Sandbox Code Playgroud)

#2

HttpRequestMessage req = new HttpRequestMessage();

foreach (var h in headers)
{
  req.Headers.Add(h.Key.ToString(), h.Value.ToString());
}
Run Code Online (Sandbox Code Playgroud)

我在这两种方法中遇到的错误是:

误用标头名称。确保请求标头与 HttpRequestMessage 一起使用,响应标头与 HttpResponseMessage 一起使用,内容标头与 HttpContent 对象一起使用。

如何在 C# net core 3.1 中的 HttpClient 中设置 POST 的标头?不能设置自定义标题吗?

c# .net-core

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