I have a list of ML experiments which I have created in Azure Machine Learning Studio. I have deployed them as web services (the new version, not classic).
How can I go into Azure Machine Learning Web Services, click on a web service (which was deployed from an experiment), then navigate back to the experiment / predictive model which feeds it?
The only link I can find between the two is by updating the web service from the predictive experiment, which then confirms what the web service is. I can see that the "ExperimentId" is a GUID in the URL when in the experiment and the web service, so hopefully this is possible.
My reasoning is that relying on matching naming conventions, etc., to select the appropriate model to update is subject to human error.
The new web service does not store any information about the experiment or workspace that was deployed (not all new web services are deployed from an experiment).
Here are the options available to track the relationship between the experiment and a new web service.
last deployment
However, the experiment keeps track of the last new web service that was deployed from the experiment. each deployment to a new web service overwrites this value.
The value is stored in the experiment graph. One way to get the graph is to use the powershell module amlps
Export-AmlExperimentGraph -ExperimentId <Experiment Id> -OutputFile e.json
e.json
{
"ExperimentId":"<Experiment Id>",
// . . .
"WebService":{
// . . .
"ArmWebServiceId":"<Arm Id>"
},
// . . .
}
azure resource tags
The tags feature for Azure resources is supported by the new web services. Setting a tag on the web service programmatically, with powershell or via the azure portal UX can be used to store a reference to the experiment on the new web service.
Related
I am working on a solution that requires many continuously running web jobs. I don't want to package these with any of the Web Apps that are part of our product for reasons of isolation and performance.
I guess some Azure Dev Ops work is involved, but my question is do I have to create Web app with no code, like a Weather Forecast type of project in order to deploy my web jobs.
You are correct. Azure does not have any standalone resource for webjobs. You can create an empty webapp and use that to host your webjobs. Or, you can check out Azure Function app which is quite similar to web jobs as it also utilizes WebJobs SDK but have some additional features as well as constrains. Chris has explained more in details in his answer.
I am quite new on web services and asp.net too. I created .net web service and deployed it on IIS. My web service takes some data from android and does some manipulation and store it in text files. Because I am working with localhost so there is no issue with storing data in text files. But now I am publishing this web service to azure portal now I am confused where my data will be stored? should I changed the path ? or what I have to do?
Local file system on azure cloud service may change so your data may be lost. Better to have the blob storage for storing file. https://www.simple-talk.com/cloud/cloud-data/an-introduction-to-windows-azure-blob-storage-/
I am using Axis2 (1.5.3 currently) and Tomcat (6.0.26 currently) and am running a web service. I would like to also host HTML pages for configuring the web service.
What is the best way to go about this? I assume keeping the same context is key, but perhaps it is not.
My current distribution is located under a folder structure similar to this:
Tomcat/webapps/mycompany
With the actual service code here:
Tomcat/webapps/mycompany/WEB-INF/services/myService
In a browser, I can hit my web service by going to here:
/mycompany/services/myService
I note that I can drop actual HTML files in this path and Tomcat will, indeed serve them up.
For instance, if I put "index.html" under Tomcat/webapps/mycompany, I can navigate to /mycompany/index.html and see my html.
What I want to do is have this HTML be attached to JAR/class files that can interact with the already-existing service class files in the same context as the service. Therefore, I can have the browser configure the web service directly.
Is this possible, and is there a tutorial or something out there that will help me with this? Note that I have been working with Tomcat and Axis2 for a while now for this particular web service, but I have never actually deployed a web application/html using Tomcat before.
Thanks.
First of all what do you mean by a configuring a service. Normally in SOA world services are analogous to interfaces. IMHO you can just change a service, since their are other users that rely on the services you are exposing.
If i want to change a service i would rather introduce a new version of the service after deprecating the existing one.
Are you talking about applying QoS to existing serviecs. Then that makes sense.
Anyway, If you want to have a web-app alongside with axis2 service engine, it is possible. If you look inside the axis2 war file you'll find the web.xml entry to Axis2Servlet. It is this servlet that serves the web services requests.
So, what you need is the Axis2Servlet mapping in your web-app along with your usual servlet-mappings. Number of possible ways to configure your services using web-app files. One options is to use web-services call itself to (with authentication) to configure it.
By "configure a service", take this example:
The service has a set of datasets.
Each dataset exists in a separate database.
The service can manage 0..n datasets.
The service must be configured to know about each dataset.
This is what I'm configuring. I'm not trying to configure Axis itself or redefine the service.
I would like to host the HTML using the same instance of Tomcat that I'm hosting the web service with. It needs to manage sessions, have login capability, an whatnot, and has to be able to configure the web service live.
From what I'm reading, it's probably best to make an interface to the web service that the web application module can call into from a different context.
Is there a better way?
There are a number of teams who have deployed applications to a shared Weblogic application server. There has been some effort to maintain a registry but it hasn't been kept up to date. How can you programmatically discover all the web services deployed to a server and retrieve their WSDL?
Interactively, from the console, you can navigate to Deployments->Monitoring->Web Services and then enable the URI field, which is hidden by default. From this list, I can construct the WSDL: [host]:[port][URI]?WSDL
I think it is doable using JMX and have been playing with the WLST shell. The "listApplications()" command gives a list of the application names, but its not clear how to get more information.
I'm getting an error when attempting to call SharePoint's webservices on one of our platforms. To start, we have Development (DEV), Testing (QA) and Production (PROD) SharePoint servers. The QA and PROD servers are pretty much identical. We have an ASP.NET web service that sits out as a seperate application on each of them. Our data entry forms hit the web services to insert/update into a SQL database and in some cases make calls to some of SharePoints web services (lists, dws).
We’re having trouble calling SharePoint’s web services on PROD from our web services however, have no problems on QA(or DEV). In our web service code we have a web reference to the SharePoint web services (lists and dws). We attempt to call these web services to create list items/folders when a new entry is made through one of our forms. On QA, there is no problem creating the list items/folder. The form is filled out, calls our web services – which call the SharePoint web services and the list item/folder is created.
On PROD we get the following error when we attempt to call the SharePoint web services:
Unable to connect to the remote server
at System.Net.HttpWebRequest.GetRequestStream()
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
...
However, to make it more interesting, if I call the PROD SharePoint web services directly from my personal computer I have no problem creating the list items/folders. We only have the problem when our web service attempts to call the PROD SharePoint web services. We’ve looked through many different web.config files looking for differences on QA and PROD and are yet to come up with anything.
If anyone has any pointers, they would be greatly apppreciated. Thanks.
Update: I just attempted to refactor the above method to use the SharePoint Object Model API and I'm getting an unauthorized error. When using the Object Model API the credentials do not seemed to be passed properly, because it's attempting to use the MOSS Server credentials. Is there any way to tell it which credentials to use as you do with the web service api?
docLibList.Credentials = System.Net.CredentialCache.DefaultCredentials;
Thanks.
Sean,
I'm not sure I completely understand your calling pattern, but if you are indeed looping back to web services on the same box, you might be running into the infamous loopback issue:
https://serverfault.com/questions/32345/ie-8-authentication-denied-on-local-sharepoint-site/32485#32485
In short: executing hostname-based HTTP calls that loopback to the server from which they're issued can get blocked. If the loopback issue is in-play, you'll be able to call the web services in PROD from another box ... but not from the PROD box itself (i.e., looping back). I think this is consistent with the behavior you described above.
If Windows patch levels are different between your environments, it might explain why your code is failing in PROD but not in your other environments.
I hope this helps!
This probably is not the problem, but is your reference to the web service pointing to the production server correctly. I had a problem before when trying to access a SP service that was referenced incorrectly. The dev server I was pointing to was on a seperate domain and could not be found.
Regarding the update to your question about the unauthorized error using the object model:
Depending on the context that your code runs in you will sometimes need to elevate privileges. See this Elevation of Privilege MSDN article for details (also note the community comment at the end). There's also a Visual How-To.
Another method is to create a new SPSite object using a SPUserToken object. There is more information in this blog post by Daniel Larson. For the system account this would be done with the code:
SPSite site = new SPSite(SPContext.Current.Site.ID,
SPContext.Current.Site.SystemAccount.UserToken);
By the way, this would be better in its own question next time so that it can be correctly voted and answered.