小编joh*_* Gu的帖子

在 asp.net mvc5 中执行长时间运行任务的最佳方法

我正在开发一个部署在 IIS 7.0 中的 asp.net mvc5 web 应用程序 + 实体框架 6.0。目前我有一个 NetworkScanning 服务器,我将其实现为正常操作方法,可以通过两种方式启动:-

1.基于 global.asax 中定义的时间表:-

static void ScheduleTaskTrigger()
        {
            HttpRuntime.Cache.Add("ScheduledTaskTrigger",
                                  string.Empty,
                                  null,
                                  Cache.NoAbsoluteExpiration,
                                  TimeSpan.FromMinutes(Double.Parse(System.Web.Configuration.WebConfigurationManager.AppSettings["ScanInMinutes"])), // as defined inside the web.config
                                  CacheItemPriority.NotRemovable,
                                  new CacheItemRemovedCallback(PerformScheduledTasks));
        }

        static void PerformScheduledTasks(string key, Object value, CacheItemRemovedReason reason)
        {
            //Your TODO
            HomeController h = new HomeController();
            var c = h.ScanNetwork("***", "allscan");
            ScheduleTaskTrigger();
        }
Run Code Online (Sandbox Code Playgroud)

2.或者从用户浏览器手动调用action方法。

现在 action 方法看起来如下(我删除了很多代码,因为这个想法是为了提示我在 action 方法中所做的事情):-

public async Task<ActionResult> ScanNetwork(string token, string FQDN) 
        {
            string TToken = System.Web.Configuration.WebConfigurationManager.AppSettings["TToken"];//get the T token from …
Run Code Online (Sandbox Code Playgroud)

asp.net iis asp.net-mvc quartz.net asp.net-mvc-5

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

如何在多个Controller类之间重用Action Method验证

我正在使用实体框架-6在asp.net mvc-5 Web应用程序上工作.我使用实体框架映射了我的数据库表,生成包含DBContext类的.edmx文件.目前我有两个控制器类,一个用于管理服务器,另一个用于管理vms.添加/编辑服务器或VM时,我想检查他们的ip和mac地址是否已经存在.目前我正在对动作方法本身进行如下检查: -

public class Server : Controller{
    [HttpPost]
     [ValidateAntiForgeryToken]
     public ActionResult Create(ServerJoin sj)
            {
                bool ITipunique = repository.ISITIPUnique(vmj.NetworkInfo2.FirstOrDefault().IPADDRESS);
                bool ITmacunique = repository.ISITMACUnique(vmj.NetworkInfo2.FirstOrDefault().MACADDRESS);
                bool Tipunique = repository.ISTIPUnique(vmj.NetworkInfo2.FirstOrDefault().IPADDRESS);
                bool Tmacunique = repository.ISTMACUnique(vmj.NetworkInfo2.FirstOrDefault().MACADDRESS);

                try
                {

                    if ((sj.IsIPUnique == true) && (!ITipunique || !Tipunique))
                    {

                        ModelState.AddModelError("NetworkInfo2[0].IPAddress", "Error occurred. The Same IP is already assigned.");

                    }
                    if ((sj.IsMACUnique == true) && (!ITmacunique || !Tmacunique))
                    {

                        ModelState.AddModelError("NetworkInfo2[0].MACAddress", "Error occurred. The Same MAC Address is already assigned.");

                    }
Run Code Online (Sandbox Code Playgroud)

&

public class VM : Controlelr { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc asp.net-mvc-5

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

无法将List <>对象序列化/反序列化为JSON

我正在开发2个Web应用程序; A&B.现在我在两个Web应用程序中都有一个名为CRUDOutput的共享类: -

public class CRUDOutput
{
    public Operation4 operation { get; set; }
}
public class Operation4
{
    public Result result { get; set; }
    public string name { get; set; }
}
public class Result
{
    public string status { get; set; }
    public string message { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

现在在Web应用程序中我正在返回以下内容: -

[HttpPost]
public ActionResult CreateResource(CreateResource cr)
{
    List<CRUDOutput> co = new List<CRUDOutput>();
            co.Add(JsonConvert.DeserializeObject<CRUDOutput>(crudoutput));
            co.Add(JsonConvert.DeserializeObject<CRUDOutput>(crudoutput2));

    return Json(JsonConvert.SerializeObject(co));
}
Run Code Online (Sandbox Code Playgroud)

现在从Web应用程序B,我调用的操作方法如下: -

try
{
    using (WebClient wc = new …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc json json.net

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

在两个asp.net MVC Web应用程序之间传递非ASCII字符将无法识别

我有两个asp.net mvc-4和mvc-5 web应用程序,现在在我的第一个asp.net mvc中,我有以下内容WebClient在第二个Web应用程序上调用一个动作方法(Home/CreateResource): -

using (WebClient wc = new WebClient()) 
         {
          var data = JsonConvert.SerializeObject(cr);             
          string url = scanningurl + "Home/CreateResource";
          Uri uri = new Uri(url);
          wc.Headers.Add(HttpRequestHeader.ContentType, "application/json");
          wc.Headers.Add("Authorization", token);
          output = wc.UploadString(uri, data);
         }
Run Code Online (Sandbox Code Playgroud)

现在在data转移到第二个动作方法的对象内部,它包含一个密码值,在我的情况下,这个值££123有2个非ASCII字符.

现在在第二个动作方法上,它将接受以下值: -

在此输入图像描述

如果有办法在2个动作方法之间传递非ASCII字符,那么任何人都可以这样做吗?我在第一个操作方法上检查密码是否已正确序列化,并且密码正在从视图正确传递到操作方法.但问题是在数据如何在网络内传输或第二个动作方法上的模型绑定器如何接受传入的数据对象?

.net c# asp.net asp.net-mvc asp.net-mvc-4

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

OR运算符的序列

我有以下OR运算符,现在当前如果c为null,将返回Error视图,并且在第二次检查时不会引发空异常(!c.ManagedBy ...); 但这只会在编译器在(!c.Ismanaged ..)检查之前执行(c == null)检查时发生.

Book c = elearningrepository.GetBook(id);

if ((c == null) || (!c.IsManagedBy(User.Identity.Name)))
{
    return View("Error");
}
Run Code Online (Sandbox Code Playgroud)

所以我可以保证编译器将始终首先执行c == null检查,或者最好将上面的检查分成两个单独的If语句来显式强制执行序列.BR

c# asp.net-mvc-3

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

在数据库第一种方法中使用DbContext与Objectcontext定义数据注释

我使用与实体框架数据库的第一种方法,当我习惯使用的ObjectContext的数据库表被映射的默认模板工作,所以我用来创建#partial类&[MetadataType(typeof运算)以应用数据注解,,但是当我开始使用的DbContext代码生成模板来映射数据库表,我发现,它会在我的示范区创建.TT文件夹都被我发现,我可以直接申请数据注解到的.cs类本身,而不需要创建在objectcontext情况下的部分类.目前数据注释工作正常,但我的方法会导致我不知道的问题,我应该创建部分类,因为我曾经使用Objectcontext吗?BR

entity-framework objectcontext asp.net-mvc-3 dbcontext

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

从我的控制器调用JSON API,而不是从我的asp.net mvc Web应用程序中的视图调用

我需要从我的asp.ner mvc Web应用程序中为BPM引擎调用JSON API.对BPM的API调用构造如下: -

http://localhost:8080/jw/web/json/workflow/process/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=' + username
Run Code Online (Sandbox Code Playgroud)

其中j_user和hash参数表示在BPM引擎端设置的主登录用户名和密码.目前我在我的asp.net mvc的视图级别使用java /脚本调用API: -

$(document).ready(function () {
    var fullurl = 'http://localhost:8080/jw/web/json/workflow/package/list?j_username=kermit&hash=9449B5ABCFA9AFDA36B801351ED3DF66&loginAs=' + username ;
    $.ajax({
        type: "GET",
        url: fullurl, 

        dataType: "JSONP",
        // contentType: "application/json; charset=utf-8",
        success: function (result) {

            $.each(result.data, function (key, val) {

                // Format the text to display.
             //   var str = val.packageName + ' | ' + val.packageId;
                var str = val.packageName ;
                // Add a list item for the product.
                $('<li/>', { text: str })
                .appendTo($('#products'));

            });
        } …
Run Code Online (Sandbox Code Playgroud)

api asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

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

如何获取值的二进制表示

可能重复:
c#中的十进制到二进制转换

我有3号,432号,1号等号码.我需要将这些数字转换为零和1的集合,然后将这些位存储在整数数组中,但不确定如何获得任何整数的位表示.

c#

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

无法隐式转换类型'System.Collections.Generic.IEnumerable &lt;System.Collections.Generic.ICollection

我在asp.net mvc wen应用程序中定义了以下模型类:

public class CustomerDetails
{
    public AccountDefinition AccountDefinition {get; set;}
    public SDOrganization SDOrganization {get; set;}
    public ICollection<SiteDefinition> SiteDefinition { get; set; }
    public ICollection<AaaPostalAddress> AaaPostalAddress { get; set; }
    public ICollection<AaaContactInfo> AaaContactInfo { get; set; }
    public virtual ICollection<UserSiteMapping> UserSiteMapping { get; set; } 
}
Run Code Online (Sandbox Code Playgroud)

然后我写以下查询:

var customerDetails = entities.AccountDefinitions
    .Where(a => a.ORG_ID == id)
    .Select(cd => new CustomerDetails
    {
        AccountDefinition = cd,
        SDOrganization = cd.SDOrganization,
        AaaPostalAddress = cd.SDOrganization.AaaPostalAddresses,
        AaaContactInfo = cd.SDOrganization.AaaContactInfoes,
        SiteDefinition = cd.SiteDefinitions,
        UserSiteMapping = cd.SiteDefinitions.Select(p2 …
Run Code Online (Sandbox Code Playgroud)

entity-framework-4.1

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

如何在授权失败时返回自定义视图或JSON,而不是显示用户名和密码对话框

我正在使用asp.net mvc 4 Web应用程序,我编写了以下自定义授权类: -

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]

    public class CheckUserPermissionsAttribute : AuthorizeAttribute
    {

        public string Model { get; set; }
        public string Action { get; set; }

        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if (!httpContext.Request.IsAuthenticated)
                return false;
            //code goes here
            if (!repository.can(ADusername, Model, value)) // implement this method based on your tables and logic
            {

                return false;
                //base.HandleUnauthorizedRequest(filterContext);
            }
            return true;

           // base.OnAuthorization(filterContext);
        }
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            if (filterContext.HttpContext.Request.IsAjaxRequest())
            { …
Run Code Online (Sandbox Code Playgroud)

asp.net iis authorize-attribute asp.net-mvc-4

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