Monday, November 13, 2017

How to use Handy Tool Object Exporter to extract Data from C# object List?

it is quite handy, if we can extract data from our C# object list and send them to your teammate for debugging purpose.

Here is the tool that provide the great need

https://marketplace.visualstudio.com/items?itemName=OmarElabd.ObjectExporter

it is compatible for Visual Studio 2013,2015,2017

You just have to highlight the data list object that you plan to export the data.

First, you go to Tools--> Object Explorer




 Second Pick the object from the List




third pick either Json,XML data format to export the data.

Wednesday, November 8, 2017

how to control the page access in the controller level in MVC web application?

we can control the page access in various area in the MVC web applicaton.

first we can control in the razor page file.

@if (!this.User.HasPermission(ADGroup))
{
    Response.Redirect("~/ErrorMessage.aspx?ErrorCode=AccessDenied");
}

second we can control access in the Action method.
 public async Task<ActionResult> MyPage()
        {
         if (!IsAllowAccess)
       {
           return Redirect("~/ErrorMessage.aspx?ErrorCode=AccessDenied");
       }
    }

third we can set the access permission in the Class level by implmented an ActionFilterAttribute.


 public class MyPageAccessActionFilterAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (!IsAllowAccessPage)
            {
                filterContext.Result = new RedirectResult("~/ErrorMessage.aspx?ErrorCode=AccessDenied");
            }
            base.OnActionExecuting(filterContext);
        }
    }


Then in Page Controller, I can just set the  MyPageAccessActionFilter Attribute in controller class
   [MyPageAccessActionFilter]
    public class MyController : Controller
    {

}

the third approach will reduce lots of code and affect on the maintenance. since we can easily modify one file to apply permission on the action methods within the controller.














Tuesday, November 7, 2017

How to download a document Web Application accessed from UAG

we can easy to use javascript Window.Open to download a document in IE or popup it up in Chrome and Firefox.

However, the user access the web application from UAG, then error indicates that the document is not found with the url absolute path. since the UAG had block the actual host server of the web application and shown the user with the UAG host server.


it is quick simply to work around it. we should return the relative path to front end for the Window.Open method.

Before:

Window.Open("Http://myserver/myapp/filefolder/myDoc")


After

Window.Open("myapp/filefolder/myDoc")



In the Server, we can use the following snippet code to demonstrate this approach.


   if (baseUrl.Contains("localhost"))
{
    response.fileName = baseUrl + "/Downloads/" + response.fileName ;
}
else
{
    string currentAppFolder = System.AppDomain.CurrentDomain.BaseDirectory;
    if (!string.IsNullOrEmpty(currentAppFolder))
    {
        string parentFolder = string.Empty;
        currentAppFolder = currentAppFolder.Trim('\\');
        int index = currentAppFolder.LastIndexOf("\\");
        if (index > -1) {
            parentFolder = currentAppFolder.Substring(index);
        }
        response.nvisFileName = parentFolder + "/Downloads/" + response.fileName ;
    }
}