|
Thank you for reply. Is there any other location we can find the log files, other than the event viewer?
==
move files to ScriptsWeb folder
Get-ChildItem -Path "E:\<.myfolder>INT" | Move-Item -Destination "E:\<myfolder>" -force
|
|
|
|
|
AFAIK, Powershell scripts don't log errors anywhere by default.
If you execute the script interactively, you should see the errors in the Powershell console.
If you execute the script from a scheduled task, you could try redirecting the output to a log file:
.\YourScript.ps1 > YourScriptLog.txt
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I created a simple Web API. It has a controller called Test:
public class TestController : ApiController
{
[HttpGet]
public string Test()
{
return "API Server is running";
}
}
I now am trying to host it on Window Server 2019. I found this article and followed it, including the Publish page:
Hosting ASP.NET Web API REST Service On IIS 10
When I go to the server and type http://localhost:65078/api/test/test, I get a 404.
I'm new to this, so I don't really know what to look for to fix this. Some help would be appreciated
Thanks
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
modified 29-May-19 13:09pm.
|
|
|
|
|
|
Yes it did, but this is a different issue.
It is working on Server 2012R2, but not on Server 2019
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
|
|
|
|
|
But you're still adding the method name to the end of the URL, which was the same problem you had previously.
Maybe this tool might shed some light on the problem:
ASP.NET Routing Debugger | You’ve Been Haacked[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Well I don't get it then, because on the older server (2012R2) it works as is.
Thanks, I'll try the tool
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
|
|
|
|
|
hello again...
not talking about a responsive grid here, where images are fully separated from each other & fixed in their own block...but rather a typical photo collage, similar to magazine page design, where images *overlap* each other. Is this possible, in bootstrap (or any other form that can be incorporated into a bootstrap site)...???
thanx,
mf
|
|
|
|
|
It's possible but you won't be using Bootstrap features to accomplish this. You're going to have to apply css to rotate images (I'd normally use scss with a mixin to give a random(ish) rotation to the image to accomplish this but you could use JavaScript as well).
This space for rent
|
|
|
|
|
I have a RestSharp wrapprer class to work with my WebAPI, and it has an Execute method looks like this
public async Task<T> ExecuteAsync<T>() where T : new()
{
URL = client.BaseUrl + request.Resource;
IRestResponse<T> restResponse = await client.ExecuteTaskAsync<T>(request, new CancellationToken());
var result = (T)restResponse.Data;
if (!string.IsNullOrEmpty(restResponse.ErrorMessage))
{
throw new Exception(restResponse.ErrorMessage);
}
else
{
if ((int)restResponse.StatusCode >= 299)
{
string message = string.Format("An error occured calling the WebAPI. {0} The status code is '{1}'. {2} The error message is {3}",
Environment.NewLine, restResponse.StatusCode, Environment.NewLine, restResponse.Content);
throw new Exception(message);
}
}
return result;
}
I then use a proxy class like this. This class has all the calls to the api in it
public async Task<List<OperatorEntity>> GetAllOperatorsAsync()
{
var webAPIExecutor = new WebAPIExecutor(Credentials, ServerUrl, "/Operator/GetAllOperators/", Method.GET);
return await webAPIExecutor.ExecuteAsync<List<OperatorEntity>>();
}
All of my web calls are contained in this proxy. I then use it like this:
private async void GetAllOperators()
{
var operators = await APIProxy.GetAllOperatorsAsync();
LoadOperatorList(operators);
}
The question is, what is the right way to handle a failure? For example, the server is down, or the credentials are incorrect? Or an exception happened on the server side?
You can see that I have some exception handling in the ExecuteAsync method, but it this the right way to handle this?
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
|
|
|
|
|
I think that largely depends on what your goals are. If you're trying to create an application that can be used offline and synchronize with the service(s), you might want to handle communication differently than an application that should only handle live data.
How would I divide it up logically? Well, I think that Separation of Concerns suggests that logic for handling failure status on a web request should be fundamentally segmented from success business logic, especially as you might want to have a global response (such as re-authenticate for a 403) to a failure rather than a by-method one. Now you have an advantage here: your ExecuteAsyc() returns a task instead of an object. This means that you can return a failure handling task, perhaps from some sort of failure state management factory that constructs tasks based on configuration.
This also means that you'll likely want to utilize a proxy wrapper for type T rather than a simple "new()", so that metadata about the request and error state can be passed with the data.
The best part about that approach is that you'll end up with a logical framework rather than a one off.
Just spit-balling, but that's the route that I would (and roughly do) go.
"Never attribute to malice that which can be explained by stupidity."
- Hanlon's Razor
|
|
|
|
|
For testing, I purposely returned Forbidden in one of my API controller methods:
return request.CreateResponse(HttpStatusCode.Forbidden, "Not authorized");
I have a RestSharp wrapper class that has an Execute method:
public async Task<T> ExecuteAsync<T>() where T : new()
{
URL = client.BaseUrl + request.Resource;
IRestResponse<T> restResponse = await client.ExecuteTaskAsync<T>(request, new CancellationToken());
var result = (T)restResponse.Data;
if (!string.IsNullOrEmpty(restResponse.ErrorMessage))
{
throw new Exception(restResponse.ErrorMessage);
}
else
{
if ((int)restResponse.StatusCode >= 299)
{
string message = $"An error occured...", {restResponse.StatusCode}, {restResponse.Content}";
throw new Exception(message);
}
}
return result;
}
The problem is that when an error occurs and restResponse.ErrorMessage has a message, it's something like
Unable to cast object of type 'System.String' to type 'System.Collections.Generic.IDictionary`2[System.String,System.Object]'.
and the restReponse.Content has the "Not authorized" message sent from the controller.
This seems odd. Shouldn't the exception message be the message I sent back? Am I doing something wrong here?
Thanks
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
|
|
|
|
|
Have you tried checking the ResponseStatus , StatusCode , and ErrorException properties before trying to access the Data property?
Also, as far as I can see, the Data property already returns T , so you shouldn't need that cast.
public async Task<T> ExecuteAsync<T>() where T : new()
{
URL = client.BaseUrl + request.Resource;
IRestResponse<T> restResponse = await client.ExecuteTaskAsync<T>(request, default(CancellationToken));
if (restResponse.ErrorException != null) throw restResponse.ErrorException;
return restResponse.Data;
} Recommended Usage · restsharp/RestSharp Wiki · GitHub[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I'm fiddling with a small (very) web project that has a database, web api and client projects (Razor pages and later android using Xamarin).
Web API to database is secured by sql server authentication (userid and password)
I'm struggling to decide where the user authentication should be done.
Should the client pass the details to the API and get it authenticated or should the client get the user data from the API and do the do the authentication at the client?
Should the client use a web token or the user credentials to communicate to the API?
Enlightenment would be appreciated.
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
Authentication needs to happen in the API, not the client. Otherwise, a rogue client could call the API and claim to be authenticated without actually authenticating.
The client should pass the user's credentials to the authentication endpoint, which should return an authentication token. All subsequent requests from the client should include that authentication token.
This article is for ASP.NET Core, but the flow should be similar for any back-end:
Secure your ASP.NET Core 2.0 API (part 1 - issuing a JWT)[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Thanks for the link Richard.
[edit]
Excellent, succinct article on JWT and exactly what I was looking for (I have already done most of this but the article clarified the requirement nicely). Another link added to my codebase. Thank you.
[/edit]
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
modified 17-May-19 19:41pm.
|
|
|
|
|
hi i am new to html,
i would like to ask in regards to button position in line
eg:
.square{
height: 50px;
width: 50px;
background-color: powderblue;
}
<div class="board-row">
<button class="square">a</button>
<button class="square">
</button><button class="square"></button>
</div>
for the above simple code snippet, the button top is always not aligned whenever the button have no content.
why is this so? and how do i fix this?
|
|
|
|
|
Add vertical-align to your CSS rule to fix the problem.
.square {
height: 50px;
width: 50px;
background-color: powderblue;
vertical-align: top;
}
Original: Edit fiddle - JSFiddle[^]
Fixed: Edit fiddle - JSFiddle[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I just created a really simple Asp.Net Web API. I created it by using the Empty template with 'Web API' checked.
I then added a controller called Test with this in it:
[HttpGet]
public string Test()
{
return "Server is running";
}
I then run it and Chrome opens to http://localhost:49970. So far so good. I the enter http://localhost:49970/API/Test/Test in the browser and get
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:49970/API/Test/Test'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'Test'.
</MessageDetail>
</Error>
What's wrong here???
If it's not broken, fix it until it is.
Everything makes sense in someone's mind.
Ya can't fix stupid.
|
|
|
|
|
The default API routing uses the HTTP method, not the action name. Try removing the final "Test" from the URL: http://localhost:49970/API/Test/
You can add extra routes to use the action name if you want:
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Routing in ASP.NET Web API | Microsoft Docs[^]
Alternatively, you could use attribute routing:
Attribute Routing in ASP.NET Web API 2 | Microsoft Docs[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
We are building a site that has some text with parallax effect and the client wants us to duplicate the pixel size on the PSD she gave us. I was telling the team captain that we need to use Rem or CSS calc as it is not maintaining the same relative shape and positioning. The PSD shows 70px and the website shows 70px but it's not the same and they are not satisfied. Any ideas? It's wp with Jupiter x Theme.
|
|
|
|
|
I'm trying to render JUST a partial view (without re-rendering the entire page) in the existing page when I click a link.
I have the following in my home controller:
public ActionResult AppInfo()
{
return View();
}
public ActionResult AppInfoAbout()
{
return PartialView("_About");
}
public ActionResult AppInfoContact()
{
return PartialView("_Contact");
} I have the following in my AppInfo.cshtml
<!--
<div style="display:flex;flex-direction:row;">
<div style="width:150px;">
<a href="@btnLinkAbout" class="btn btn-primary aef-app-info about-btn">@aboutBtnText</a>
<br/>
<a href="@btnLinkContact" class="btn btn-primary aef-app-info contact-btn">Contact Us</a>
</div>
<div style="width:850px;">
<div id="siteInfoContent" >
<span>Click one of the buttons at the left of this box to view the associated content.</span>
</div>
</div>
</div> This is the jquery I'm using:
<script>
$('.aef-app-info').on('click', function(evt) {
evt.preventDefault();
evt.stopPropagation();
var $contentDiv = $('#siteInfoContent'),
url = $(this).data('url');
$.get(url, function(data) { $contentDiv.html(data); });
});
</script> If I run it with the javascript as presented, it renders the entire AppInfo view (without the selected partial view) in the siteInfoContent div. If I comment out evt.preventDefault(); , it renders just the desired content as if it were a whole new page.
What am I doing wrong?
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
I didn't know you can do with partial views in MVC.
I was curious so I looked around the internet and found this. Seems like a lot of work to get up and running.
Revisiting Partial View Rendering in ASP.NET MVC - Simple Talk
I would look at the script first. Double check your Url to make sure it's valid, then place a breakpoint in the controller and make sure it hits, then print the results to the console with console.log(response); . You may have to stringify the result to get it to print.
You can hit F12 in your browser and select console to view error messages (console.log) or network to view http request to help figure it out.
function d(id) {
var url = $(this).data('url');
$.post(url, { id: id })
.done(function (response) {
$("#siteInfoContent").html(response);
});
without an Id in the query string request
function d(id) {
var url = $(this).data('url');
$.post(url)
.done(function (response) {
$("#siteInfoContent").html(response);
});
And then check your CORS policy if you get a Http 404, permission denied.
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
Thanks, I'll look at it again when I get home (I didn't see this until this morning before I left for work).
It would be real handy if I can get this working.
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- When you pry the gun from my cold dead hands, be careful - the barrel will be very hot. - JSOP, 2013
|
|
|
|
|
Quote:
<a href="@btnLinkAbout" class="btn btn-primary aef-app-info about-btn">
url = $(this).data('url')
Your script is taking the URL from the data-url attribute on your link. But you don't seem to have a data-url attribute on your link.
I suspect you just want the href attribute instead:
$('.aef-app-info').on('click', function(evt) {
evt.preventDefault();
evt.stopPropagation();
var $contentDiv = $('#siteInfoContent'),
url = this.href;
$.get(url, function(data) { $contentDiv.html(data); });
});
Otherwise, you'll need to add the data-url attribute to your links:
<a href="@btnLinkAbout" data-url="@btnLinkAbout" class="btn btn-primary aef-app-info about-btn">@aboutBtnText</a>
<br/>
<a href="@btnLinkContact" data-url="@btnLinkContact" class="btn btn-primary aef-app-info contact-btn">Contact Us</a>
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|